Moon Lander

Количество сыгранных игр:  
5
1
5
Комментарии (17)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Oleg 13 уровень, Санкт-Петербург
11 июля, 13:19
Офигенный инструмент! Вручную записывать матрицу цветов очень неудобно, спасибо)
LuneFox25 уровень, Москва
11 июля, 13:49
Рад помочь! :)
Александр3 уровень, Москва
9 июля, 12:50
а как ракету сделать и начать игру
LuneFox25 уровень, Москва
9 июля, 14:39
Никак, я не стал доделывать мунлендер.
LuneFox25 уровень, Москва
20 мая, 23:57
JGSM: update 0.91 Добавлено три инструмента! FILL (заливка) Если хотите залить ограниченную одноцветную область одним цветом, нажмите ENTER, чтобы однократно переключить режим DRAW в режим FILL, а затем укажите желаемую ячейку при помощи ЛКМ. Всё просто. REPLACE (замена цвета) Если хотите заменить все нарисованные ячейки одного цвета другим цветом, нажмите ESC, чтобы однократно переключить режим DRAW в режим REPL. Затем при помощи ЛКМ укажите цвет на холсте. Все ячейки этого цвета окрасятся в текущий выбраный цвет. UNDO (отмена действия) Всякое случается. Теперь справа над холстом есть кнопка UNDO, которая позволит отменить до 20 последних изменений на рисунке, включая действие очистки (CLEAR).
LuneFox25 уровень, Москва
20 мая, 15:30
С горем пополам (и ужасно низким FPS) прилунившись на единственный спутник Земли, в одном из кратеров Амиго нашёл электронный артефакт с загадочным названием "JAVARUSH GAMES SPRITE MAKER"! "Какая полезная штука! С ней я смогу проще рисовать графику к своим играм!" — воскликнул робот. "Сможешь, — ответил голос откуда-то изнутри механизма. — Главное, не превышай размер в 32 пикселя в высоту и ширину." "А почему так мало? Может, я хочу рисовать на поле из 100х100 клеток!" — возмутился Амиго. "Я забочусь о твоём зрении. Ты же ничего не увидишь, будь клеточки ещё меньше." — объяснил голос из артефакта. "Понятно, — грустно вздохнул Амиго. — Ну ладно, лучше, чем ничего ведь. Эй, а где мой посадочный лунный модуль?! Куда он подевался?!" Как экспортировать графику из этого инструмента в массив для вставки в код: 1) Закончив рисовать спрайт, нажмите на кнопку EXPORT, появится диалоговое окно. 2) Не совершая никаких иных действий, кликните в вашем любимом браузере правой кнопкой в пустое место около игрового поля. 3) Выберите опцию "Исследовать элемент" ("Inspect element"), откроется окно исследования кода страницы. 4) Выполните поиск в этом окне (обычно Ctrl+F) на наличие фразы "nеw int" — это и будет массив, который можно скопировать. P.S. В коде при желании можете расставить переносы строк. Из-за особенностей HTML пришлось сделать вывод двумерного массива в одну строку. Это можно быстро сделать, например, в Notepad++, заменив последовательность }, на },\n по всему тексту.
LuneFox25 уровень, Москва
12 мая, 17:04
Добавил индикатор кадров в секунду (FPS), чтобы посмотреть, насколько всё плохо. Для комфортного управления нужно минимум 20 FPS (у меня локально 20-21), но когда я запускаю из браузера, при включении всей графики, на удалении получаю 7 FPS, а при приближении к луне 3-4 FPS. Беда-печаль. Напишите, какой фреймрейт у вас выходит при запуске приложения, кому не трудно.
Pavlo Plynko40 уровень, Киев
13 мая, 05:34
На одноим компе вверху 14-16, внизу 8-10. На другом - постоянно 2.
LuneFox25 уровень, Москва
13 мая, 09:30
Да уж, оптимизация движка просто топ) Я вот сижу и думаю, почему же так получается. В принципе сами вычислительные операции несложные — выходит, что все тормоза упираются в количество перекрашиваемых клеточек на экране. Судя из метода setCellColor действие закрашивания ячейки производится только в случае положительного размера и несовпадения с предыдущим цветом.
if (children.size() > 0 && !Color.valueOf(color.name()).equals(((Rectangle)children.get(0)).getFill())) {
    ((Rectangle)children.get(0)).setFill(Color.valueOf(color.name()));
}
Это объясняет, почему полная перерисовка экрана, на котором мало что происходит, выполняется быстрее, чем полная перерисовка экрана, на котором много ячеек меняется. Но тогда почему тормоза остаются, когда луна с однородным цветом занимает фактически всю область 64х64? Для меня пока загадка. В любом случае, я что-то сильно замахнулся в своих идеях сделать что-то красивое...
LuneFox25 уровень, Москва
13 мая, 09:54
Кажется, понял, почему тормоза. Вся игра переводится на HTML в браузере. Вот так, например, выглядит одна ячейка со звёздочкой, мерцающей на фоне. Видимо, обработчик HTML не справляется с таким количеством обновляемых div-ов, или не может проверить состояние какого-то div-а, чтобы принять решение о том, стоит его изменять или нет, просто форсированно обновляет. Но это так, догадки.
Pavlo Plynko40 уровень, Киев
13 мая, 13:05
То что ты делаешь действительно очень красиво! Но, движок не был рассчитан на такой крутяк, и соотв. не тестировался. Или тестировался, но было решено оставить как есть :) В веб-"движке" происходит что-то подобное:
public void setBackgroundColor(Color _backgroundColor) {
    if (this.backgroundColor == _backgroundColor) return;

    this.backgroundColor = _backgroundColor != null ? _backgroundColor : Color.NONE;
    setCssAttribute("backgroundColor", this.backgroundColor.toCssColor());
}
protected void setCssAttribute(String attributeName, String attributeValue)
{
    DOM.setStyleAttribute(getElement(), attributeName, attributeValue);
}
класс com.google.gwt.user.client.DOM
LuneFox25 уровень, Москва
13 мая, 18:16
Эх, значит придётся отказаться от попыток украшательств своих игр) Хорошо, хоть сапёр пошаговый. Рисуется тяжело, медленно, но верно)
LuneFox25 уровень, Москва
8 мая, 16:04
В общем, решил я попробовать переосмыслить механику MoonLander-а, изменив перспективу происходящих действий... и всё шло хорошо до тех пор, пока не рискнул запустить промежуточный вариант в браузере. Разочарование. То, что у меня локально работает 20 кадров в секунду, в браузере заводится со скрипом и в таком состоянии корабль практически неуправляем и неотзывчив (всё замедляется раз в 5 минимум, наверное). С пропуском кадров становится ещё топорнее. Короче, играть в такое на сайте будет невозможно. Что я только не делал, чтобы ускорить рендеринг. Сначала уменьшил экран до 64х64 вместо 100х100. И все 44 кадра луны заготавливал заранее, и переходил на инты вместо даблов, и методы закрашивания клеток переопределял, один контур оставлял, оптимизировал производительность методов... всё без толку. Тормозит, даже когда луна ещё далеко. Такие дела, сами можете оценить. Ракета неубиваемая, нет смысла в таком состоянии доделывать какой-то геймплей. СТРЕЛОЧКИ: газ по осям X и Y ПРОБЕЛ: газ по оси Z (приближение/удаление) ENTER: начать спуск (пробел так же работает) ESC: сбросить и сгенерировать новые положения объектов
Pavlo Plynko40 уровень, Киев
8 мая, 16:11
на робочем компе норм, даже через RDP, корабль управляем и отзывчив :) от имени всех мажоров прошу опубликовать полную версию )
LuneFox25 уровень, Москва
8 мая, 16:15
Тогда я не пойму, в чём может быть проблема =/ Ноут у меня неслабый, и повторюсь, в идее всё работает по полной. А вот в браузере полный кошмар. Посмотри, у тебя такая же скорость в браузере? https://youtu.be/ziRLUvoghWQ
Pavlo Plynko40 уровень, Киев
8 мая, 16:25
Очень похоже, либо такая-же, либо немного медленнее. Но на робочем топовое железо. На домашнем даже не пробую )
LuneFox25 уровень, Москва
8 мая, 16:29
Тогда нужно отзывы пособирать ещё. Или понять, от чего же всё таки зависит производительность. А то по факту даже протестировать не получается нормально :( А вообще, звучит иронично. Написать игру 100х100 пикселей, которую тянет только топовое железо, хаха.