Comments 24
Кстати.
А как лучше всего в данном случае отрисовывать землю?
А как лучше всего в данном случае отрисовывать землю?
Можно на отдельном слое:
Если хотите заняться этим, то могу консультировать и помочь.
libcanvas.createLayer( 'ground' )
Если хотите заняться этим, то могу консультировать и помочь.
Окей, если появятся вопросы — то обращусь
Вопрос не в слое :)
Там же тысячи взаимодействующих объектов — клеточным автоматом что ли обрабатывать? :)
Там же тысячи взаимодействующих объектов — клеточным автоматом что ли обрабатывать? :)
Таки объясните?) Я именно в эту реализацию не играл, но не вижу проблем)
Имею в виду вообще большие количества маленьких точек, подчиняющихся физическим законам. Разве моделирование их поведения не требует каких-то ёмких вычислений?
Ну, вроде, там особо сложных вычислений нету. В видео
Scorched Earth — Game Play песчинки падают по принципу «под мной нету песчинки — я должна опуститься на пиксель вниз». Это хорошо видно в 1:15. Берем все пиксели в радиусе взрыва и пересчитываем их. В современных флешках вообще векторная земля.
Scorched Earth — Game Play песчинки падают по принципу «под мной нету песчинки — я должна опуститься на пиксель вниз». Это хорошо видно в 1:15. Берем все пиксели в радиусе взрыва и пересчитываем их. В современных флешках вообще векторная земля.
подскажете как игра называется? по скрину вспомнил, что играл давным-давно на спектруме, может где-то на эмуляторе найду =)
Какие темы вас интересуют? Если будут желающие — я их опишу.
Интересует возможность создания «серьезных» игр — т.е. не уровня Pong'а, а уровня по крайней мере старых DOS'овских игрушек — вроде тех же Space Quest, Kyrandia, и Dune 2.
И насколько я понимаю в возможностях создания полноценных MMOG Канвас пока проигрывает тем же HTML5+CSS3 (см. Aves Engine)?
Осторожнее, можно нарваться на холивар
Это холиварный вопрос. Но, имхо, не проигрывают. Aves Engine просто не умеют готовить Canvas.
Да. Хочется более серьезных туториалов. Может не таких серьезных как Dune 2, но вот про создание Lunar Lander я бы почитал с удовольствием.
Ну Lunar Lander не намного серьёзнее пинг-понга)
Не сказал бы. По крайней мере присутствуют операции с векторами и примитивная физика. А в понге (в этом конкретно) нет ничего кроме тупо смены направления движения шарика при соударении с битой или со стеной.
Просчёт столкновения с полем сделать очень легко. Это ведь всего-лишь набор прямых. Мы их храним в массиве:
А потом, кажде обновление кадра, проверяем расстояние корабля до линии
Естественно,
Это, естественно, если использовать LibCanvas
var lines = [
new Line(10, 10, 20, 20),
...
new Line(710, 10, 720, 20)
];
А потом, кажде обновление кадра, проверяем расстояние корабля до линии
Ship = atom.Class({
[...]
collision: function (lines) {
for (var i = lines.length; i--;) {
if (lines.distanceTo( this.position ) < this.radius) {
return true;
}
}
return false;
}
});
distanceTo
относительно требовательна к ресурсам, потому можно оптимизировать за счёт того, что предварительно проверять, находится ли корабль достаточно низко:Ship = atom.Class({
[...]
collision: function (lines) {
if ( this.position.y > this.minCollisionHeight ) {
return false;
}
for (var i = lines.length; i--;) {
[..]
}
});
Естественно,
minCollisionHeight
вычисляется один раз перед началом приложения. Достаточно пройти все отрезки, найти самый высокий Y им приплюсовать к ней радиус корабля:Ship = atom.Class({
[...]
genMinCollisionHeight: function (lines) {
var max = 0;
for (var i = lines.length; i--;) {
max = Math.max( max, lines[i].y );
}
return max + this.radius;
}
});
Это, естественно, если использовать LibCanvas
Черт, я подсел играть в понг сам с собой:)
Заметил, что даже несмотря на высокий ФПС (около 60) быстродвижущиеся объекты на канвасе (в вашем случае шарик) двигаются как-то малость дергано и неравномерно. Я, правда, ковырял библиотеку cake.js, думал может это она тормознутая, но у вас вот то же самое с шариком.
Заметил, что даже несмотря на высокий ФПС (около 60) быстродвижущиеся объекты на канвасе (в вашем случае шарик) двигаются как-то малость дергано и неравномерно. Я, правда, ковырял библиотеку cake.js, думал может это она тормознутая, но у вас вот то же самое с шариком.
Sign up to leave a comment.
Как написать ПингПонг при помощи LibCanvas