RS Game Maker Community
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

 
Расширенный поиск
  Главная  Форум   Вики Блоги FAQ Игры Статьи Примеры Войти Регистрация  
Вики
Все желающие приглашаются редактировать вики. Можете писать о своих (или чужих) играх, размещать туториалы, постить статьи - главное навесить категорию.
Страниц: 1 2 3 4   Вниз
  Печать  
Fungeoid [игра для программистов, головоломка]
0 Пользователей и 1 Гость смотрят эту тему.
Илья
Ветеран форума
*****

Репутация: 100
Offline Offline

Сообщений: 1 571

18 Март 2018 в 21:17
Пару лет назад я наткнулся на игрушки TIS-100 и MHRD, поиграл, понравились.
Долго вынашивал идею, что еще можно сделать "для программистов". Вспомнил про эзотерические языки, в частности, про Befunge.

Подробное описание языка под спойлером.
Befunge — стековый эзотерический язык программирования. Считается двумерным, так как программа на Befunge записывается в таблицу со сшитыми краями (тор), по которой в различных направлениях перемещается интерпретатор, исполняя команды, расположенные в её ячейках.

Язык имеет вот такие команды:
перемещение (9):
  • >   Двигаться вправо
  • <   Двигаться влево
  • ^   Двигаться вверх
  • v   Двигаться вниз
  • _   Двигаться вправо, если на вершине стека 0, иначе — влево.
  • |   Двигаться вниз, если на вершине стека 0, иначе — вверх.
  • ?   Двигаться в случайном направлении
  • #   Пропустить следующую ячейку ("трамплин")
  • @   Конец программы
манипулирование со стеком (3):
  • :   Поместить в стек копию вершины (forth:DUP)
  • \   Обменять местами вершину и подвершину (forth:SWAP)
  • $   Удалить вершину (forth:DROP)
модификация кода программы (2):
  • p   "PUT": со стека извлекаются координаты ячейки и ASCII-код символа, который помещается по этим координатам
  • g   "GET": со стека извлекаются координаты ячейки; ASCII-код символа по этим координатам помещается в стек
константы (2):
  • 0-9   Поместить число в стек
  • "   Начало/конец символьного режима, в котором ASCII-коды всех текущих символов программы помещаются в стек
стековые арифметические операции (5):
  • +   Сложение вершины и подвершины (forth:+)
  • -   Вычитание вершины и подвершины (forth:-)
  • *   Умножение вершины и подвершины (forth:*)
  • /   Целочисленное деление (forth:/)
  • %   Остаток от деления (forth:MOD)
стековые логические операции (2):
  • !   Отрицание: нуль на вершине заменяется на 1, ненулевое значение — на 0 (forth:0=)
  • `   Сравнение "больше, чем": если подвершина больше вершины, в стек помещается 1, иначе 0 (forth:>)
ввод-вывод (4):
  • &   Запросить у пользователя число и поместить его в стек
  • ~   Запросить у пользователя символ и поместить в стек его ASCII-код
  • .   Распечатать вершину стека как целое число (forth:.)
  • ,   Распечатать символ, соответствующий ASCII-коду на вершине стека (forth:EMIT)

И пример программы от туда же:
>                          v
@,,,,,,,,,,,,"Hello World!"<
Более наглядный пример:
22+
В стек будет помещена двойка, потом еще двойка.
Когда интерпретатор наткнется на "+" - он достанет со стека два числа, сложит их и поместит в стек результат.

На первый взгляд язык может показаться не много сложным, но по факту же, с ним можно разобраться за 15 минут, написав пару программ.

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

В плане программирования я не вижу особых проблем, но я как всегда упрусь в отсутствие дизайна и сюжета, в этом я просто дно.
Если ты дизайнер и у тебя есть идеи по поводу того, как можно красиво завернуть интерпретатор эзотерического языка в игру, напиши мне в личку (или в тред). Сотни тыщь я заплатить не смогу, но думаю, договоримся. Тем более, что работы тут должно быть не много, на сколько я понимаю.

В данный момент, спустя пару часов разработки, у меня есть интерпретатор и почти готовый редактор. Думаю 3-4 дня потрачу на то, чтобы навести порядок, продумаю как делать "задания" и кину вам демку.

Скриншотик для затравки:
На скриншоте - почти готовый редактор. Почти - по тому, что я пока не знаю как сделать его удобным для редактирования "2д-тянпрограмм".
Цветастые полосы - это возможные траектории выполнения кода программы. Строятся на лету, при вводе кода.

Глобальные задачи:
  • Допилить редактор
  • Придумать удобный менеджер миссий
  • Прикрутить таблицу рекордов
  • Разобраться с дизайном, сюжетом, графической частью (если она вообще будет)
  • Релизнуться в стиме

Последнее редактирование: 18 Март 2018 в 21:44 от Илья

 
Илья
Ветеран форума
*****

Репутация: 100
Offline Offline

Сообщений: 1 571

Ответ № 1 25 Март 2018 в 23:54
Чуть-чуть новостей:
GMS2, который я спецом купил для разработки, был выброшен на помойку. У меня просто нет слов - GMS это кусок говна. С ним невозможно работать, вообще. Воркспейс - говно, шрифты - говно, интерфейс в целом - говно. Все просто ужасно. Все переписал на LOVE 2D (кроме подсветки возможных путей, на это пока забил). Если вы думаете, куда валить с ГМа, советую именно этот движок.

Для примера, вот так у меня выглядит ГМ:

И вот так выглядит редактор с кодом для LOVE 2D:

Нет ни чего лишнего, только код, шрифты 10/10.

На этой неделе попробую разобраться с pixel-perfect рендерингом. На сколько я понял, это проблема решаема на LOVE 2D, в отличии от GM'a. HiDPI здесь поддерживается.
Последнее редактирование: 12 Апрель 2018 в 23:42 от Илья

Кто-тo
Ветеран форума
*****

Репутация: 81
Offline Offline

Сообщений: 1 112


Ответ № 2 28 Март 2018 в 02:05
На сколько я понял, это проблема решаема на LOVE 2D, в отличии от GM'a. HiDPI здесь поддерживается.
Тебе нужно будет использовать love.window.setMode с флагом highdpi, и опрашивать love.window.getPixelScale чтобы знать само масштабирование, поскольку даже на macOS не обязательно будет High DPI (MacBook Air, iMac с 1080p экраном, Mac Mini, хакинтош).
Оно не работает на Windows и Linux, но такая же проблема и у SDL2, возможно что по одинаковой причине.

Ни разу не использовал LÖVE 2D
tolich
to ne lich
Ветеран форума
*****

Репутация: 218
Offline Offline

Сообщений: 1 517


moonlite

Ответ № 3 28 Март 2018 в 10:04
Извини, но…
ни чего … на сколько
Чем тебя обидел русский язык?

Илья
Ветеран форума
*****

Репутация: 100
Offline Offline

Сообщений: 1 571

Ответ № 4 28 Март 2018 в 11:18
Тебе нужно будет использовать love.window.setMode с флагом highdpi, и опрашивать love.window.getPixelScale чтобы знать само масштабирование
Ага, сейчас так и работает.

Оно не работает на Windows и Linux, но такая же проблема и у SDL2, возможно что по одинаковой причине.
Мда, херово, если так. Попробую запустить под виндой вечером, отпишусь о результатах.

Илья
Ветеран форума
*****

Репутация: 100
Offline Offline

Сообщений: 1 571

Ответ № 5 29 Март 2018 в 23:23
Потестил на винде. Шрифты выглядят абсолютно нормально, а с линиями какая-то беда:

Винда:

Макось:

Спрошу на форуме LOVE, можно ли решить это проблему.

П.С. Скрины чуть-чуть пожаты ВК.

UPD: love.graphics.setLineStyle("rough")
Последнее редактирование: 12 Апрель 2018 в 23:42 от Илья

Кто-тo
Ветеран форума
*****

Репутация: 81
Offline Offline

Сообщений: 1 112


Ответ № 6 30 Март 2018 в 18:10
Шрифты выглядят абсолютно нормально
Потому что они растровые, а не векторные.
На счёт линий. Они выглядит так, словно рисуются со сдвигом в пол пикселя, а движок пытается компенсировать.
Только вот линии на macOS выглядят точно также, но поскольку они отрисовываются с поддержкой High DPI то оно практически незаметно. Поэтому предположу, что виновата толщина линий. Попробуй поменять настройки у love.graphics.setLineWidth, и опять же попробуй сдвинуть линии на 0,5-1,5 пикселя.
Последнее редактирование: 30 Март 2018 в 18:20 от Кто-тo
Илья
Ветеран форума
*****

Репутация: 100
Offline Offline

Сообщений: 1 571

Ответ № 7 30 Март 2018 в 18:45
Потому что они растровые, а не векторные.
Ммм, разве ttf шрифты бывают растровые? В моем проекте fixedsys - ttf.

Попробуй поменять настройки у love.graphics.setLineWidth, и опять же попробуй сдвинуть линии на 0,5-1,5 пикселя.
Спасибо, попробую вечерком.

Кто-тo
Ветеран форума
*****

Репутация: 81
Offline Offline

Сообщений: 1 112


Ответ № 8 30 Март 2018 в 21:41
fixedsys.ttf может и является векторным, на деле он очень квадратный, поскольку является векторной версией растрового шрифта.
Попробуй какой нибудь Arial, и сразу увидишь что оно выглядит некрасиво на Windows.
Илья
Ветеран форума
*****

Репутация: 100
Offline Offline

Сообщений: 1 571

Ответ № 9 01 Апрель 2018 в 23:53
На этой недельке таки доделал "выполнение" заданий.

Целью этого задания было умножение числа на 2. Первый столбец цифор - входные данные, второй - то, что должно получиться и третий - результат работы программы.

137 - это кол-во шагов, за которое было выполнено задание. Нужно как раз для рекордов. Будет использоваться в таблицах рекордов.
Еще будет учитываться то, сколько вообще инструкций задействовано при выполнении программы. Т.е. по задумке, можно соревноваться в двух направлениях - скорость выполнения и объем инструкций.

Чем займусь на следующей неделе:
1) Запилю обработку ошибок
2) Буду пытаться привести окно в божеский вид
3) Если дойду до сюда, то запилю еще тестовых заданий и кину таки вам демку

Последнее редактирование: 12 Апрель 2018 в 23:41 от Илья

Spartan121
Невыспавшийся
Завсегдатай
****

Репутация: 35
Offline Offline

Сообщений: 629


DragonGameStudios

Ответ № 10 05 Апрель 2018 в 18:55
GMS2 на MacOS полное дерьмо, лучше через Parralels Desktop юзай первую или вторую там же.
На маке хорош Unity

Илья
Ветеран форума
*****

Репутация: 100
Offline Offline

Сообщений: 1 571

Ответ № 11 08 Апрель 2018 в 16:30
На маке хорош Unity
Да, но мне не хочется его юзать. Я привык к простоте ГМа - хочу нарисовать линию, пишешь draw_line. В Unity же, для того, чтобы нарисовать линию, нужно прочитать талмуд о LineRender. Love просто так же, как и ГМ.

Новости о проект - новостей нет. Вы наверняка слышали о утечке данных в Фейсбуке. ФБ, после этого, сильно изменил АПИ. Из-за этого, я работаю вторую неделю без выходных, чтобы все переделать на новое АПИ на основной работе, такие дела.

Илья
Ветеран форума
*****

Репутация: 100
Offline Offline

Сообщений: 1 571

Ответ № 12 11 Апрель 2018 в 22:39
Сегодня часок покодил. В основном пытался придумать интерфейс.

Ссылка на скрин: https://pp.userapi.com/c840134/v840134303/3fbc3/fL71tVKVHM4.jpg

Огромный скрин который не влазит на страницу под спойлером:
Последнее редактирование: 12 Апрель 2018 в 23:43 от Илья

Огион
Завсегдатай
****

Репутация: 133
Offline Offline

Сообщений: 989


Ответ № 13 12 Апрель 2018 в 14:17
Картинкам можно прописывать размер. Самое оно для HiDPI-скринов:
[img width=802]https://pp.userapi.com/c840134/v840134303/3fbc3/fL71tVKVHM4.jpg[/img]
Илья
Ветеран форума
*****

Репутация: 100
Offline Offline

Сообщений: 1 571

Ответ № 14 12 Апрель 2018 в 23:43
Картинкам можно прописывать размер. Самое оно для HiDPI-скринов:
[img width=802]https://pp.userapi.com/c840134/v840134303/3fbc3/fL71tVKVHM4.jpg[/img]
Спасибо, поправил все скрины в теме.

input.txt
Не очень
Активный участник
**

Репутация: 19
Offline Offline

Сообщений: 145


12.8 Gb

Ответ № 15 13 Апрель 2018 в 14:01
Для игры подойдет интерфейс как в SpaceChem, где с хоткеями набор "программы" занимает секунды. Ну, после того как ты час (два, три...) придумывал решение.
Точнее там есть два способа ввода – первые 5-10 уровней, пока не выучишь хоткеи, перетаскиваешь элементы мышкой и тебе норм. Хотя с самого начала использовать WASD на смену направления интуитивно очевидно.
Прикреплённые файлы Графические миниатюры:
Илья
Ветеран форума
*****

Репутация: 100
Offline Offline

Сообщений: 1 571

Ответ № 16 13 Апрель 2018 в 22:17
SpaceChem отличная игра, конечно. Я ее так и не смог пройти (в прочем, как и любую другую игру от Зактроникс'а).

Сейчас у меня управление чем то похоже на управление в SpaceChem - перемещаем курсор по сетке и тыкаем кнопочки, чтобы добавить символ. При этом, направление курсора запоминается и и при вводе он перемещается в соответствующую сторону.

На выходных я постараюсь доделать интерфейс до более-менее вменяемого состояния и таки скину демку с одним уровнем.

Илья
Ветеран форума
*****

Репутация: 100
Offline Offline

Сообщений: 1 571

Ответ № 17 14 Апрель 2018 в 16:17
Чуток поигрался с интерфейсом:

Что еще нужно сделать:
1) Надо где-то написать, что ENTER - запуск программы, SPACE - "шаг", для отладки программ. ESC - вернуться к редактированию.
2) Ошибки типа переполнения стека, пустого стека и деления на ноль -  надо ловить и выводить.

Вот после этого точно скину демку.

Илья
Ветеран форума
*****

Репутация: 100
Offline Offline

Сообщений: 1 571

Ответ № 18 14 Апрель 2018 в 19:10
Пока я допиливаю редактор и интерфейс - подскажите, как можно обезопасить онлайн таблицу рекордов от мамкиных хакеров?

Понятное дело, что самый верный вариант - сделать интерпритатор Befunge на сервере, слать туда программу, выполнять ее там и писать "рекорд", но... Хочется че-то более простое.

Кто-тo
Ветеран форума
*****

Репутация: 81
Offline Offline

Сообщений: 1 112


Ответ № 19 14 Апрель 2018 в 20:35
Посылать на сервер рекорд, программу, и отдельно проверять подозрительные рекорды.
Для какого нибудь ТОП-10 или даже ТОП-100 ещё сойдёт, остальные же могут оставаться непроверенными.
Страниц: 1 2 3 4   Вверх
  Печать  
 
Перейти в:  

RSGMC (gmakers.ru) © 2007—2018
Счётчик–@Mail.ru