Wake of Gods Forum | Форум Во Имя Богов

Full Version: Игры для терминалов
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3 4 5 6 7 8 9
packa, gamecreator, спасибо за идею. Личные рекорды вообще к читерам имунны. Это в дополнение к общим.

Quote:П.С. Друин страшный человек
В прошлом году мы заменили ему имплантант на новую версию. Боюсь, теперь мир обречён. Заголовок в газете: "Друин набирает 625 очко в змейке, съедая всё поле!"

gamecreator, понял. Хвост и голова должны двигаться одновременно. Исправил в локальной версии.
626, или это не Друин 148
Quote:Игра "змейка". Первая апробация эмуляции консоли.

Спасибо, кэп!
Я имел в виду - что это вообще за консоль, зачем её эмулировать, на чём она сделана - и как она привязана к нашему форуму? ...
мы потом будем приложения писать для нее.
На чём?
на мутноскрипте наверно. Берс вроде ниче больше не придумывал.
Quote:Спасибо, кэп!
Я имел в виду - что это вообще за консоль, зачем её эмулировать, на чём она сделана - и как она привязана к нашему форуму? ...

   Браузеры по умолчанию не содержат средств для создания приложений для терминалов - то есть приложений с текстовым интерфейсом и стандартной функциональностью. В своё время для Turbo Pascal была библиотека CRT, в которой был реализован базовый функционал для работы с консолью:
  • Функции изменения цвета и фона выводимого текста
  • Управление видимостью и положением курсора
  • Установка текущего окна, относительно которого выводится текст и считаются координаты курсора
  • Очистка текущего окна
  • Вывод текста с поддержкой спецсимволов, таких, как перевод строки, которые должны быть обработанны по особому, а также автоматической прокрутки
  • Проверка состояния клавиатуры, нажата ли в данный момент какая-либо клавиша
  • Ожидание нажатия клавиши и получение её кода
  • Сложная функция чтения ввода текста с поддержкой базового редактирования

Чем удобен текстовый интерфейс?
  • В мире существуют десятки тысяч терминальных игр/программ, в том числе и на приставках/тетрисах
  • Консольные игры писать проще, так как не нужна особая графика и музыка. Можно вложить силы в саму игру
  • Консольные приложения писать проще, чем гуишные

   HTML/Javascript содержит средства для написания эмулятора консоли и библиотеки функций для неё с приемлимыми трудозатратами (1400 строк текста, не кода).
Реализация основана на создании Ширина * Высота одиночных span-элементов, отображающих каждый по символу, что есть существенная нагрузка на браузер, особенно если консоль велика, но позволяет регулировать отображение (символ, цвет, фон, прозрачность) каждой отдельной ячейки. Как и во всех терминалах используется моноширенный шрифт без указания конкретного, что позволяет браузерам использовать те шрифты, которые у них есть. Нормальная кроссбраузерная работа с клавиатурой крайне тяжела по причине разности реализации браузеров, их багов и отсутствия спецификации в этой сфере. В то же время консоль требует вполне чёткой работы с полным контролем разрешения/запрета обработки стандартной реакции на клавиши.
   Ещё одной проблемой является, собственно, ввод текста. Коды клавиш слабо корелируют с кодами символов. И здесь в браузерах огромная лажа.
   Наконец, javascript использует один поток и везде, кроме Оперы, это ещё и основной поток вкладки. Это значит, что большинство функций по своей природе асинхронны, а мы привыкли писать: Write('Вас зовут: '); Name = Read();
   Проблема асинхронности глобальная и моя реализация не берётся её решать (решение обычно сводится к эмуляции потока, как в примитивном виде сделано в Rpg Player). Для клавиатуры было выдвинуто требование работы с буфером обмена, по крайней мере конкретная вставка любого текста. Я использую элемент textarea (TMemo) единичного визуального размера за пределами экрана для перехвата событий клавиатуры. При потере фокуса элемент убирает красную границу с консоли, что сразу становится видно. Три ключевых события поддерживаемые браузерами (ИЕ здесь и далее не имеется в виду) KeyDown. KeyPress, KeyUp перехватываются. У каждого браузера свои особенности работы с ними, но в целом удалось вычленить общую функциональность и даже добавить новый тип событий Input, то бишь ввод. Таким образом в данный момент консоль полностью работоспособна.
   Реализация змейки - просто интересное дело и, собственно, проверка работы на практике. Я планирую вторую версию с поддержкой хотсита, разными бонусами и врагами.
   Идея создать эмуляцию терминала пришла к концу первой реализации ФЯП. Для того, чтобы из ФЯП можно было иметь доступ к консоли (а значит запускать игры на ФЯП из постов), нужно написать обёртку к каждой функции библиотеки, иначе кулхацкеры будут делать гадости.
Дошёл только до 42...
52. В принципе, до восьмидесятки смогу дотянуть наверняка - пока что я паузу вообще не юзал. А вот насчёт сотни - уже вряд ли...
Уважаемые игроки. Сейчас максимальная скорость - 1000/30 /сек. Иными словами шаг игры - 30 миллисекунд. Стоит ли увеличивать эту планку до 40-50? При 50 имеем 20 FPS, что потянет и гружёный фаерфокс при более сложном геймплее, но может быть играть станет не так азартно? Тем более, что Друин уже полторы сотни вытягивает, да и Эфрит до 52 дошёл.
Я бы до 35 увеличил и на этом остановился...
Я паузу стараюсь не юзать... Имхо тока мешает... Но на работе инохда приходится...
приделать к движку буфер ввода не помешает.
Что имеется в виду под буфером ввода? Ты пожмякал все клавиши и дальше змейка ужасные вещи творит?
Я думаю гамадел имел ввиду, что при попадании в будущую таблицу рекордов мона было ник вводить... Или я не угадал?..
Pages: 1 2 3 4 5 6 7 8 9
Reference URL's