RS Game Maker Community

Проекты и Релизы => Проекты в разработке => Тема начата: Илья от 18 Марта 2018 в 21:17



Название: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 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 дня потрачу на то, чтобы навести порядок, продумаю как делать "задания" и кину вам демку.

Скриншотик для затравки:
(https://pp.userapi.com/c845216/v845216323/7ac6/1ca-iM9ybcg.jpg)
На скриншоте - почти готовый редактор. Почти - по тому, что я пока не знаю как сделать его удобным для редактирования "2д-тянпрограмм".
Цветастые полосы - это возможные траектории выполнения кода программы. Строятся на лету, при вводе кода.

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



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

Для примера, вот так у меня выглядит ГМ:
(https://sun1-1.userapi.com/c840425/v840425033/6ca94/274_sCIRjdg.jpg)

И вот так выглядит редактор с кодом для LOVE 2D:
(https://sun9-1.userapi.com/c840425/v840425033/6ca9e/BEEdv1I_LLo.jpg)

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

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


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

Ни разу не использовал LÖVE 2D


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: tolich от 28 Марта 2018 в 10:04
Извини, но…
ни чего … на сколько
Чем тебя обидел русский язык?


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

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


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 29 Марта 2018 в 23:23
Потестил на винде. Шрифты выглядят абсолютно нормально, а с линиями какая-то беда:

Винда:
(https://pp.userapi.com/c840338/v840338415/6bf2b/Y618yJBsqqk.jpg)

Макось:
(https://pp.userapi.com/c845219/v845219159/14552/2BDC_kQfiOQ.jpg)

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

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

UPD: love.graphics.setLineStyle("rough")


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Кто-тo от 30 Марта 2018 в 18:10
Шрифты выглядят абсолютно нормально
Потому что они растровые, а не векторные.
На счёт линий. Они выглядит так, словно рисуются со сдвигом в пол пикселя, а движок пытается компенсировать.
Только вот линии на macOS выглядят точно также, но поскольку они отрисовываются с поддержкой High DPI то оно практически незаметно. Поэтому предположу, что виновата толщина линий. Попробуй поменять настройки у love.graphics.setLineWidth (https://love2d.org/wiki/love.graphics.setLineWidth), и опять же попробуй сдвинуть линии на 0,5-1,5 пикселя.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 30 Марта 2018 в 18:45
Потому что они растровые, а не векторные.
Ммм, разве ttf шрифты бывают растровые? В моем проекте fixedsys - ttf.

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


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Кто-тo от 30 Марта 2018 в 21:41
fixedsys.ttf может и является векторным, на деле он очень квадратный, поскольку является векторной версией растрового шрифта.
Попробуй какой нибудь Arial, и сразу увидишь что оно выглядит некрасиво на Windows.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 01 Апреля 2018 в 23:53
На этой недельке таки доделал "выполнение" заданий.

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

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

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

(https://pp.userapi.com/c845216/v845216041/1a02b/OQFsKM_oCdg.jpg)


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Spartan121 от 05 Апреля 2018 в 18:55
GMS2 на MacOS полное дерьмо, лучше через Parralels Desktop юзай первую или вторую там же.
На маке хорош Unity


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

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


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 11 Апреля 2018 в 22:39
Сегодня часок покодил. В основном пытался придумать интерфейс.

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

Огромный скрин который не влазит на страницу под спойлером:
(https://pp.userapi.com/c840134/v840134303/3fbc3/fL71tVKVHM4.jpg)


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


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


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: input.txt от 13 Апреля 2018 в 14:01
Для игры подойдет интерфейс как в SpaceChem, где с хоткеями набор "программы" занимает секунды. Ну, после того как ты час (два, три...) придумывал решение.
Точнее там есть два способа ввода – первые 5-10 уровней, пока не выучишь хоткеи, перетаскиваешь элементы мышкой и тебе норм. Хотя с самого начала использовать WASD на смену направления интуитивно очевидно.


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

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

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


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 14 Апреля 2018 в 16:17
Чуток поигрался с интерфейсом:
(https://pp.userapi.com/c831109/v831109234/d5f84/lJqBftnpJdc.jpg)

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

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


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

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


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Кто-тo от 14 Апреля 2018 в 20:35
Посылать на сервер рекорд, программу, и отдельно проверять подозрительные рекорды.
Для какого нибудь ТОП-10 или даже ТОП-100 ещё сойдёт, остальные же могут оставаться непроверенными.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Огион от 15 Апреля 2018 в 14:22
I am not a lawyer security specialist.

Первое, что приходит в голову — ставить подпись при отправке. Добиваешь результат нулями (чтобы усложнить брутфорс), дописываешь секретную строчку, получаешь хэш и отправляешь его вместе с результатом. На стороне сервера делаешь то же самое и сверяешь хэш, вычисленный сервером, с тем, что отправил игрок. Если они совпадают — всё ок.

Чтобы защититься от Артмани, можно проверять программу непосредственно перед отправкой результата. Игрок поменял счёт в артмани, нажал «Отправить» — а ты ещё раз прогнал программу, вычислил результат заново и сразу же отправил.

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


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 15 Апреля 2018 в 16:59
Огин, тут нюанс в том, что игра, по сути, open-source. В LOVE 2D просто собирается zip с файлами, и все. Можно их распаковать и изменять как душе угодно.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Кто-тo от 15 Апреля 2018 в 17:01
I am not a lawyer security specialist.

Первое, что приходит в голову — ставить подпись при отправке. Добиваешь результат нулями (чтобы усложнить брутфорс), дописываешь секретную строчку, получаешь хэш и отправляешь его вместе с результатом. На стороне сервера делаешь то же самое и сверяешь хэш, вычисленный сервером, с тем, что отправил игрок. Если они совпадают — всё ок.
Было бы проще понять, что ты сейчас нагромоздил, если бы объяснил откуда берётся секретная строчка, и как она оказывается на сервере.
Если из исходной программы, то зачем лишние шаги, и как это вообще должно помочь? Если программу не исполнять на сервере, то выходит что сервер доверяет программе что результат, секретная строчка и хэш не подменены.
Хотя на фразе «добиваешь результат нулями чтобы усложнить брутфорс» можно было и остановиться.

Чтобы защититься от Артмани, можно проверять программу непосредственно перед отправкой результата. Игрок поменял счёт в артмани, нажал «Отправить» — а ты ещё раз прогнал программу, вычислил результат заново и сразу же отправил.
От артмани поможет, но давай предположим, что у игры открытый исходный код (Lua компилируется в байт-код, который легко декомпилировать).
Если человек настроен на подмену результата, ему ничто не помешает убрать строку выполнения, который находится прямо перед отправкой. Но в этом случае гораздо проще отсылать любое число вместо переменной результата.
Можно попытаться защитить программу от «взлома», написав какой нибудь самописный DRM, но это будет пустой тратой времени.

Но самым крутым вариантом было бы переложить верификацию над пользователей. Чтобы игра в фоновом режиме проверяла решения других игроков.
Вот этот вариант самый адекватный (после выполнения кода на сервере, но Илья просил другие варианты). Осталось добавить блокчейн, кошельки, и назвать Fungecoin'ом.
Он сводится к тому, что сервер не доверяет результатам, и хочет чтобы его проверили. Но всё зависит от того, как реализуется проверка, поскольку это всё таки не криптовалюта, в которой миллионы майнеров независимо проверяют результат. В какой нибудь медленный день, когда игроков в сети совсем нет, ничто не помешает мамкиному хакеру запустить сотню экземпляров «взломанной» игры, которая говорит что результат определённой программы правильный.
В таком случае есть два варианта - каждому игроку проверять каждый результат топовой таблицы (надеюсь, больше чем ТОП-100 не будет), либо если не на сервере, то хотя бы на компьютере Ильи держать проверятель топовой таблицы.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 15 Апреля 2018 в 18:00
Писал-писал пост, прикрепил файлик, все сломалось и текст потерялся. Эх...

Короче - демка есть, но ее нет. Я не смог собрать бинарник, че-то не работает, хз. В прикреплении love-файл с игрой, для его запуска установите love2d (https://love2d.org/).

О демке - там все тоже задание, нужно умножать числа на два. Мой рекорд - 119 шагов, пишите о том, сколько получилось у вас.

Про управление - я специально ни чего не пишу. Мне интересно, сможете ли вы разобраться. Скажу только, что по мимо символьных кнопок работает еще Enter, space, ctrl & esc.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: input.txt от 15 Апреля 2018 в 18:30
У меня 80

Выглядит круто, аж TIS-100 захотелось пройти. Но как, блин, удалять символы из клеточек?


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 15 Апреля 2018 в 18:40
У меня 80
Блин, я знал, что кто-то просто запишет все в линию =)

Выглядит круто, аж TIS-100 захотелось пройти.
Спасибо, приятно слышать =)

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

Как бы ты хотел удалять символы? Как тебе будет удобно?

П.С. А с режимами разобрался?  RUN, DEBUG, SELECT DIRECTION?


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: input.txt от 15 Апреля 2018 в 19:57
Как бы ты хотел удалять символы? Как тебе будет удобно?
На самом деле ничего лучше удаления текущего символа через delete я тоже не придумал.
Сделай еще love.keyboard.setKeyRepeat(true) в love.load()


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Кто-тo от 15 Апреля 2018 в 21:25
Поставил Löve 11.0.0 64-bit, получаю:
Error

main.lua:57: attempt to call field 'getPixelScale' (a nil value)


Traceback

main.lua:57: in function 'draw'
[C]: in function 'xpcall'
Запускаю на Windows 10 1709, если заменить на scale = 1.0 всё работает.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: input.txt от 15 Апреля 2018 в 21:34
Renamed APIs
All renamed APIs in 11.0 are deprecated rather than removed, until the next major release.

Renamed love.window.getPixelScale to love.window.getDPIScale.
...


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 15 Апреля 2018 в 21:46
На самом деле ничего лучше удаления текущего символа через delete я тоже не придумал.
Тогда давай так и сделаем, че уж.

love.keyboard.setKeyRepeat(true)
Ага, добавил, спасибо.

Поставил Löve 11.0.0 64-bit, получаю
Спасибо, что указал версию. В 11-ой версии чуть-чуть сломали совместимость, у меня используется 10-ая.

Попробуй с вот этой версией: https://bitbucket.org/rude/love/downloads/love-0.10.2-win64.exe
Ну или просто подожди чуть-чуть, пока я не перелезу на 11-ую версию, это в планах =)

П.С. Пожалуй, перелезу на 11-ую прям щас. Через часик-другой обновлю демку.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Кто-тo от 15 Апреля 2018 в 21:50
Я спокойно заменил строку в main.lua, больше ни на что не жаловалось. Если что, High DPI в 11й нет, например со шрифтом Consolas выходит мыло.
Для удаления текущего символа лучше добавить Backspace (если только вы не говорили про маковский Delete, который Backspace'ом и является)

EDIT: 84, не в одну строчку.
[attachment=1]


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 15 Апреля 2018 в 22:22
Версия, которая работает и со старыми версиями, и с новой:
https://www.dropbox.com/s/5zy5ibgmu8njpsr/fungi.love?dl=0

Я вообще выпилил скейлинг. Что с ним, что без него, все работает одинаково, хз зачем я вообще с ним заморачивался.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 15 Апреля 2018 в 22:23
Кто-тo, ахах, не лень тебе было столько набивать? =)


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 15 Апреля 2018 в 22:32
Я сейчас вам новую задачку сделаю, раз интерес есть =)


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 15 Апреля 2018 в 22:57
Обновленная демка, с новым заданием. Здесь нужно найти абсолютное значение числа (abs):
https://www.dropbox.com/s/5zy5ibgmu8njpsr/fungi.love?dl=0

Все необходимые инструкции все там же, в первом посте =)

Ну и скрин моего решения (не подглядывайте):
(https://pp.userapi.com/c846523/v846523911/2824e/KtnQWke_7aI.jpg)


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: input.txt от 15 Апреля 2018 в 23:09
Löve 0.10.2: на полсекунды появляется интерфейс потом чёрный экран. Что-то ты там сломал.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 15 Апреля 2018 в 23:28
Очень странно, завтра постараюсь разобраться.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: input.txt от 16 Апреля 2018 в 00:00
Хз почему, но если в setColor не передавать четвертый параметр (альфа), то все ок.

(https://i.imgur.com/I28vlQC.png)


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 16 Апреля 2018 в 00:09
Все верно, в 11-ой версии в качестве альфы нужно передавать флоат 0.0-1.0, а раньше - 0-255.

Я завтра разберусь с тем, как создавать билды и буду кидать их, чтобы вы не мучились.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: input.txt от 16 Апреля 2018 в 00:13
Лучше я 11.0 скачаю


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Кто-тo от 16 Апреля 2018 в 00:14
Run либо не работает, либо ему что-то от меня требуется, не могу понять что.
Руками считать количество инструкций неудобно.
И ещё, Esc для закрытия опасен, я вот сейчас случайно закрыл, и пытаюсь понять что у меня там было пришлось повторно делать.

EDIT: поменял на rctlr, работает. Клавиши return и enter не работают.

EDIT2:
(https://i.imgur.com/PU6mcGp.png)
Красная ячейка лишняя, без неё выйдет 245/18
Хотя признаюсь, я поглядел в исходники и узнал, что делает каждая функция.

EDIT3: input.txt, твой вариант можно ускорить на 38 шагов, добавив лишь две инструкции.

EDIT4: нашёл баг, счётчик инструкций не уменьшается при удалении инструкции.

EDIT5:
(https://i.imgur.com/G7L6HV7.png)

EDIT6:
(https://i.imgur.com/WhVhNJN.png)

EDIT7:
(https://i.imgur.com/mcDmqfF.png)
Лучше пойду спать. Если кто побъёт этот рекорд - флажок в руки, я уверен что быстрее только спамом инструкций.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 16 Апреля 2018 в 11:26
Run либо не работает, либо ему что-то от меня требуется, не могу понять что.
Ммм, мне тут в голову мысль пришла - а не перешел ли ты, случайно, в один из режимов? Возможно, это был режим отладки/режим выбора направления курсора. Скорее всего, последний. В чем его суть - когда нужно сменить направление курсора - нажимаем ctrl, затем стрелку, куда будем двигаться.

Наверное, стоит менять цвет полоски внизу при смене режимов, чтобы акцентировать на этом внимание.

И ещё, Esc для закрытия опасен, я вот сейчас случайно закрыл
Эх, сорян. Я уберу это сегодня, да.

EDIT: поменял на rctlr, работает. Клавиши return и enter не работают.
Блин, очень странно. Перепроверю все сегодня, но все таки, мне кажется, что ты случайно вошел в какой-либо режим.

EDIT4: нашёл баг, счётчик инструкций не уменьшается при удалении инструкции.
Спасибо, починю =)


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Кто-тo от 16 Апреля 2018 в 15:55
EDIT: поменял на rctlr, работает. Клавиши return и enter не работают.
Блин, очень странно. Перепроверю все сегодня, но все таки, мне кажется, что ты случайно вошел в какой-либо режим.
Я разобрался в режимах, особенно что режим выбора направления включается сразу после ввода _ и |, дело не в них.
Даже сразу после запуска игры, если нажимать Enter, ничего не происходит. Но в модифицированном файле при нажатии изменённой клавиши оно работает.
Я считаю, что это баг в Löve 11.0.0, либо они опять что-то поменяли.

Кстати о вводе _ и |. После нажатия стрелки пусть курсор переходит на одну ячейку, чтобы дважды стрелочку не нажимать.

EDIT: Ни в 11.1, ни в 0.10.2 со старым файлом не работает. Во всех трёх случаях использовалась 64-битная Windows версия.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 16 Апреля 2018 в 22:32
И ещё, Esc для закрытия опасен
Закрытие по ESC убрал.

нашёл баг, счётчик инструкций не уменьшается при удалении инструкции
Вроде бы исправил. Сейчас при нажатии delete инструкции пересчитываются.

Хотя признаюсь, я поглядел в исходники и узнал, что делает каждая функция.
Таки нужно будет сделать туториал =)

Кстати о вводе _ и |. После нажатия стрелки пусть курсор переходит на одну ячейку, чтобы дважды стрелочку не нажимать.
Тоже сделал. Если вход в режим выбора направления курсора произошел автоматически, то после выбора направления будет совершен переход.
Если же вход в режим выбора направления был произведен игроком, то перехода не будет.

Наверное, стоит менять цвет полоски внизу при смене режимов, чтобы акцентировать на этом внимание.
Это тоже сделал, правда цвета там ужасные, потом подберу нормальные.



Ну а теперь перейдем к твоему багу - увы, я не смог его воспроизвести.
Тестил на трех разных машинах (2 из них - Win10 64), на трех разных версиях Löve (11.1, 11, 0.10.2).
Везде все работает =(

Единственное, что я могу предложить сейчас - билд, в котором при нажатии на кнопку, будет выводится, собственно, нажатая кнопочка.
Так мы сможем глянуть что у тебя вообще происходит при нажатии на enter.

П.С. Сама "последняя нажатая кнопочка" будет отображаться в левом верхнем углу.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Кто-тo от 16 Апреля 2018 в 22:52
При нажатии Enter выводит kpenter, т.е. Numpad'овский.
Должно быть особенность ноутбука Prestigio 133S, поскольку у него физически нет места под Numpad, и клавиши Num Lock с Fn никак не влияют на отсылаемый код клавиши.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 17 Апреля 2018 в 22:46
Отлично, разобрались =)

Сейчас фиксану это и постараюсь добавить новое задание, более интересное.

UPD: По ходу сегодня демки не будет. Хотел по быстрому сделать две "мелких" штуки, все вылилось в исправления десятка багов и полное не понимание сути происходящего.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 19 Апреля 2018 в 00:08
Сегодня сделал отображение текущей позиции в списках входных и выходных данных. Указатель стоит на следующем числе, которое будет передано в программу и, соответственное, на следующем числе, которое должно быть возвращено программой.

Но что более важно, я сделал списки входных и выходных данных "прокручивающимися". Это необходимо, т.к. некоторые задачи (типа работы с последовательностями), требуют большого кол-ва входных данных.

Скоро будет новая демка, как раз с задачкой на последовательности, а пока скрин =)

(https://pp.userapi.com/c847016/v847016521/2a003/XJQSyXBlMic.jpg)


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 20 Апреля 2018 в 00:05
Я таки сделал новое задание и демку =)

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

Мое решение под спойлером (как всегда, без намека на оптимизацию):
(https://pp.userapi.com/c846124/v846124488/2d67c/hQdoDG41etg.jpg)

И новая демка, для запуска нужен LOVE 11/11.1

П.С. Сейчас придет Кто-то и напишет реализацию в два раза быстрее, отвечаю.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Кто-тo от 20 Апреля 2018 в 03:01
Самый быстрый, который возможно сделать - 615.
Я не скажу как, поэтому выкладываю второй по скорости вариант. Если никто не догадается, то я его выложу.
(https://i.imgur.com/KnXwYsW.png)


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: input.txt от 20 Апреля 2018 в 03:05
Илья, ты зачем стек перевернул?)

(https://i.imgur.com/TdsbAuS.png)

UPD
Самый быстрый, который возможно сделать - 615.
Это если без читов.
(https://i.imgur.com/KGaPEpQ.png)

Хотя я кажется понял, как это сделать. Эх, было бы поле 16х16...

UPD 2
Что, если я скажу тебе, что это можно честно пройти за 320 циклов?
(Блин, чем я занимаюсь в два часа ночи...)


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 20 Апреля 2018 в 12:35
Самый быстрый, который возможно сделать - 615.
Я не скажу как, поэтому выкладываю второй по скорости вариант. Если никто не догадается, то я его выложу.
(https://i.imgur.com/KnXwYsW.png)
Да, классная реализация =)

Илья, ты зачем стек перевернул?)
Мне кажется, так правильнее. Ведь во всех книжках есть аналогия со "стаканом", в который помещают значения. "Перевернутый" стек - как раз очень похож на стакан =)

Это если без читов.
Блин, вот такого читинга я и боялся, ага. Как думаете, как обезопасить игру от таких решений? Тупо сделать поле меньше - не хочется =(

Что, если я скажу тебе, что это можно честно пройти за 320 циклов?
Эм, как? Это интригует =)

UPD: Сегодня будет важный пост, будем выбирать куда двигаться дальше =)


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Кто-тo от 20 Апреля 2018 в 16:02
Блин, вот такого читинга я и боялся, ага. Как думаете, как обезопасить игру от таких решений? Тупо сделать поле меньше - не хочется =(
Сделать обязательным чтение ввода.
Можно ещё сделать обязательным вывод после ввода необходимых значений, но это может добавить головной боли в будущем.

Раз мы начали о предложениях, я считаю что стоит добавить возможность сдвигать сетку, с или без переноса стартовой позиции. Просто чтобы было проще понять, что происходит.
(https://i.imgur.com/HWWI4fv.png)
Хотя если убрать !, и переставить местами ветки, выйдет 615/12
UPD 2
Что, если я скажу тебе, что это можно честно пройти за 320 циклов?
(Блин, чем я занимаюсь в два часа ночи...)
Показывай. Хотя у меня предчувствие, что ты сделал без смены направления спамом инструкций. Но это будет быстрее чем мой честный 613.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 20 Апреля 2018 в 16:15
Сделать обязательным чтение ввода.
Точно, хорошее решение =)

Раз мы начали о предложениях, я считаю что стоит добавить возможность сдвигать сетку, с или без переноса стартовой позиции
Ммм, кажется я понял о чем ты. Т.е. в твоем случае, чтобы не писать код в самой последней строчке, просто "сдвигаем" сетку на верх, и все.
Так же?


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Кто-тo от 20 Апреля 2018 в 16:37
Скорее вниз, чтобы начало программы оставалось на той же изначальной инструкции, но при этом программа не уходила через край сетки.
Хотя гораздо проще сделать не сдвиг, а выбор стартовой позиции.
Вот пример, используя прошлое задание:
ПоказатьОригинал
(https://i.imgur.com/mcDmqfF.png)
ПоказатьС тем, что я предлагаю
(https://i.imgur.com/jEYcGTW.png)
Зелёный - стартовая позиция.
На баланс это никак не повлияет, только упростит понимание происходящего.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: input.txt от 20 Апреля 2018 в 21:18
Мне кажется, так правильнее. Ведь во всех книжках есть аналогия со "стаканом", в который помещают значения. "Перевернутый" стек - как раз очень похож на стакан =)
Тогда пусть стакан снизу заполняется

Блин, вот такого читинга я и боялся, ага. Как думаете, как обезопасить игру от таких решений? Тупо сделать поле меньше - не хочется =(
В TIS-100 на каждое задание четыре теста, из них один рандомный (каждый раз разный)

А теперь решение 320 / 153:
ПоказатьСпойлер
ПоказатьСПОЙЛЕР
Ну или как-то так
(https://i.imgur.com/dgNfxDH.png)

Но это будет быстрее чем мой честный 613.
Не знаю, какой смысл ты вкладываешь в понятие "честный". Для меня это решение, печатающее правильный ответ для любых корректных входных данных.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 20 Апреля 2018 в 21:24
Хотя гораздо проще сделать не сдвиг, а выбор стартовой позиции.
Ага, я понял. Это классная идея, нужно прикрутить =)

Такс, ну а теперь, собственно, перейдем к "серьезным" вопросам =)

Сколько бы задачек вам интересно было решить с текущим функционалом?
Я пришел к тому, что нужно штук 10. У меня есть вот такой список задачек:

Реализованные:
  • Умножение чисел на два
  • Нахождение ABS
  • Нахождение длины последовательности

В запасе:
  • Если N < 0 => -1, N == 0 => 0, N > 0 => 1 - имхо, скучная фигня, т.к. слишком похожа на задачку с ABS
  • Сумма последовательности - вроде интересно, но очень похоже на "Нахождение длины последовательности"
  • Нахождение min и max числа в последовательности
  • Сортировка последовательности
  • Вывести обратную последовательность
  • Нахождение подряд идущих одинаковых чисел

Т.е. имеем 3 готовых задачки, еще 4 точно можно сделать, итого 7. Подкинете идей для задач?



Далее - не хочется же останавливаться на 10 задачах, верно? Нужно придумать другие интересные варианты геймплея.

У меня есть следующие идеи:
  • Запилить простенький пиксельный дисплей, скажем 32х32, и рисовать на нем. Если честно, мне не очень нравится такой вариант из за того, что не понятно, какие интересные задачки кроме вывода графиков можно сделать с его помощью.
  • Реализовать команды (p g) из Befunge, которые модифицируют код программы. Пилить задачки которые невозможно пройти без модификации кода. Тут проблема всего одна - нужно быть сверхразумом, чтобы пилить такие задачи, мне кажется.

Может быть, у вас есть какие-то идеи?

UPD: input.txt, набиваю ответ =)


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 20 Апреля 2018 в 21:36
Тогда пусть стакан снизу заполняется
Блин, тут в чем проблема - стек может быть большой. Не понятно, как его в таком случае обрезать и помещать на экран. В текущем варианте такой проблемы просто нет, отчасти по этому я его и выбрал.

В TIS-100 на каждое задание четыре теста, из них один рандомный (каждый раз разный)
У меня, по сути, каждое задание рандомное. Только ГПСЧ не инициализирован, по этому он всегда одни и те же числа генерит =)

А вообще, задачка выглядит вот так:
Task = {}

function Task.getName()
  return "- FIRST TASK -"
end

function Task.getDescription()
  return {
    "> READ N FROM INPUT",
    "> MULTIPLE N BY 2",
    "> SEND N TO OUTPUT",
  }
end

function Task.getStreams()
  local input = {}
  local output = {}
  for i = 0, 39 do
    input[i] = math.random(1, 99)
output[i] = input[i] * 2
  end
  return input, output
end

return Task;

А теперь решение 320 / 153:
Классно выглядит, жаль, что я еще не прикрутил сохранение и загрузку "программ", было бы интересно пускануть это.

Да вообще, был бы интересно пускануть все ваши проги, не только эту.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Кто-тo от 20 Апреля 2018 в 21:37
Но это будет быстрее чем мой честный 613.
Не знаю, какой смысл ты вкладываешь в понятие "честный". Для меня это решение, печатающее правильный ответ для любых корректных входных данных.
Честный наверное не лучшее слово, которое я выбрал.
Его, как минимум, можно определить как тот, который из входных данных получает выходные, и не сломается от смены ввода и вывода.
Показать613/12, про который я упомянул
(https://i.imgur.com/BiNKBSr.png)
У меня, по сути, каждое задание рандомное. Только ГПСЧ не инициализирован, по этому он всегда одни и те же числа генерит =)
Для изначального варианта seed лучше оставить один на все варианты, чтобы было проще разобраться. Вот когда уже первый окажется решён правильно, тогда уже следует запускать второй набор данных, случайный, чтобы знать что программа на самом деле решает задачу.
Так останется и «соревнование» на быстрый/компактный, и проверка на «честное» решение.
Классно выглядит, жаль, что я еще не прикрутил сохранение и загрузку "программ", было бы интересно пускануть это.
Проще всего взять «сырые» данные, возможно сжать какой нибудь библиотекой, обернуть результат в base64, и копировать в буфер обмена.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 21 Апреля 2018 в 16:29
Хотел сегодня накидать меню, но видимо не успею, т.к. наткнулся на какую-то странную ошибку:
https://stackoverflow.com/questions/49955267/attempt-to-call-method-load-nil-value

Тупо не могу создать несколько экземпляров одного и того же класса.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: input.txt от 21 Апреля 2018 в 18:50
О вреде глобальных переменных: ты переопределяешь Task в tasks/task_*.lua
Если писать local Task = {}, то всё ок. Правда непонятно почему Task.new() во втором случае вообще вызывался, так как Task к этому моменту уже должен был перезаписаться.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 22 Апреля 2018 в 01:36
input.txt, спасибо, да, проблема была в этом.

Подумываю сделать такое меню:
(https://pp.userapi.com/c824411/v824411000/11b700/teWDJiAY5Xw.jpg)

Изначально делал совсем по другому - но не понравилось. В итоге решил сделать просто два графика и "строку состояния", как и в редакторе. В ней будет отображаться, решена задача, или нет + инфа о кнопках.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 23 Апреля 2018 в 00:56
Сегодня тестировал графики в меню. Если в кратце - то практически готово. Нужно причесать код и вывести результаты игрока, само собой.

Был один интересный глюк - ни как не мог добиться того, чтобы все столбцы "четко" помещались в прямоугольник. Все время оставался "зазор" между последним столбцом в графике и рамкой.

Убил кучу времени, чтобы найти багу в формуле, оказалось, что все дело в округлении.

(https://pp.userapi.com/c845322/v845322386/356c2/CPtcc85HKA0.jpg)

П.С. Вступайте в группу в ВК, еси чо: https://vk.com/fungeoid
П.П.С. И добавляйтесь в друзья. А то РКН завтра заблочит наш жмакерс, и все, а с вами весело бывает.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 24 Апреля 2018 в 00:25
Почти готовый вариант меню с тестовыми данными:
(https://imgur.com/2wIHDst.png)

У меня есть вопрос - сильно плохо, если я сделаю регистрацию и вход прямо в игре?
Просто я хз как еще сделать таблицу рекордов без этого.
Можно, конечно, попробовать прикрутить логин через стим (или хз, как там это работает), но я ни когда не работал с его АПИ, и вообще я сомневаюсь, что есть биндинги для LUA.

П.С. Если у вас есть варианты как сделать табличку рекордов без регистрации, пишите, плиз.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 28 Апреля 2018 в 01:40
В прошлом посте я кидал скрин меню. После, я решил еще чуть-чуть поиграться с ним, передвигаю блоки с места на место.

Из-за того, что приходилось постоянно переписывать формулы по которым вычислялись x, y, w, h блоков, это стало приносить боль.

Так в моей игре появился недо-css-движок, который во многом копирует флексбоксы css'a.

Вот такая схема layout'a:
local layout = {
  gap = GUI_GAP,
  direction = "column",
  childs = {{
      width = 172,
      callback = drawTasksFrame,
      direction = "row",
      childs = {
        { height = GUI_LINE_HEIGHT }, -- frame header
        { callback = drawTasksList },
      }
    }, {
      space = GUI_GAP,
      direction = "row",
      childs = {
        {
          callback = drawInstructionsFrame,
          direction = "row",
          childs = {
            { height = GUI_LINE_HEIGHT }, -- frame header
            {
              gap = GUI_GAP,
              direction = "column",
              childs = {
                { callback = drawInstructionsGraph },
                { callback = drawInstructionsLeaders },
              }
            }
          }
        }, {
          callback = drawStepsFrame,
          direction = "row",
          childs = {
            { height = GUI_LINE_HEIGHT }, -- frame header
            {
              gap = GUI_GAP,
              direction = "column",
              childs = {
                { callback = drawInstructionsGraph },
                { callback = drawInstructionsLeaders },
              }
            }
          }
        }, {
          height = GUI_LINE_HEIGHT, -- frame header
          callback = drawToolbar
        }
      }
    }
  }
}
Генерит такое меню:
(https://pp.userapi.com/c834401/v834401571/1235ac/tZoegXVZw1I.jpg)

Как видно из схемы, я только ширину первой колонки задал, 4 отступа (frame header, они у меня вместо margin-top) и gap - отступы со всех сторон.

Теперь, если что-то нужно поменять, не надо пересчитывать десяток формул, достаточно поменять схему, все пересчитается само.

Круто же? =)

П.С. Да, я вообще не кодил игру


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 01 Мая 2018 в 01:31
https://www.dropbox.com/s/5zy5ibgmu8njpsr/fungi.love?dl=0

Новая демка:
0) Теперь можно писать самомодифицирующийся код
1) Редактор и меню используют мой недо-css-движок
2) В менюшке можно выбирать задачи
3) Новая задачка, на нахождение минимального и максимального числа

Для запуска все так же юзайте LOVE 11.1, а завтра я таки напишу скриптик для сборки бинарников.

П.С. Задачка с min и max получилось чет через чур сложной. По крайней мере, мне так кажется. Я решал ее часа 2, в итоге получил дико громоздкое и тормозное решение. Под спойлером решение.
(https://pp.userapi.com/c846417/v846417127/3b1a0/i716EVQMVCs.jpg)
П.П.С. 4500 шагов и 67 инструкций, ужас.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Кто-тo от 01 Мая 2018 в 01:45
[attachment=1]
Я вот не пойму, это баг в линуксовском Löve (отсюда (https://bitbucket.org/rude/love/downloads/), не компилировал ибо лень, в репозитории 0.10.2), ошибка в шрифте, или ошибка в моих линуксах (чего быть не может).
Это происходит только с A. Под Windows проверить не могу, занят обновлением десятки.

Комментарии бы пригодились, может не для других, но для объяснения самому себе, что происходит.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: input.txt от 01 Мая 2018 в 04:28
Да, адресация по двум индексам приносит боль.

С таблицей рекордов, кстати, будет проблема в том, что все 10 строчек рано или поздно (рано) забьются оптимальным решением и не изменятся уже никогда.

(https://i.imgur.com/cYnwpyV.png)

P.S. А все-таки перевернуть бы стек обратно, или переставить вниз, или как-нибудь отметить его "верх".

UPD Удалось разогнать до 1797
(https://i.imgur.com/M1v2z9k.png)


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 01 Мая 2018 в 23:21
Сори ребят, я пока не могу внятные ответы написать. Завтра все будет.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 02 Мая 2018 в 18:03
Я вот не пойму, это баг в линуксовском Löve (отсюда, не компилировал ибо лень, в репозитории 0.10.2)
Хм, возможно проблема в версии Löve - я юзаю 11.1.
ошибка в шрифте
Вероятность есть. Текущий шрифт я нашел вообще хз где. Я соберу для тебя демку с другим шрифтом, потестим.
Под Windows проверить не могу, занят обновлением десятки.
Я првоерил у себя на винде, на двух ПК - все збс.



Да, адресация по двум индексам приносит боль.
Я думаю добавить команду для "вращения" трех верхних значений в стеке. Это избавит от боли, по идее.
С таблицей рекордов, кстати, будет проблема в том, что все 10 строчек рано или поздно (рано) забьются оптимальным решением и не изменятся уже никогда.
Ммм, да, есть такая проблема. Возможно, стоит совсем выпилить таблицу рекордов, и оставить только графики.


Вопрос - как вы думаете, стоит заморачиваться и реализовывать возможность создавать несколько решений одной задачи?
Т.е. решили задачку, хотим оптимизировать решение - копируем существующее и играемся.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 03 Мая 2018 в 00:47
Кто-то, протесть пожалуйста вот это: https://www.dropbox.com/s/ph7zd6y6uwn3njb/fungi.love?dl=0

Там Courier. Интересно как с ним будет работать.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Кто-тo от 03 Мая 2018 в 21:36
Я вот не пойму, это баг в линуксовском Löve (отсюда, не компилировал ибо лень, в репозитории 0.10.2)
Хм, возможно проблема в версии Löve - я юзаю 11.1.
Я имел ввиду, что брал официальную сборку, поскольку в репозитории старая версия.
В Fedora 28 тоже 0.10.2. 11.x поломал некоторые вещи, поэтому либо мейнтейнер не стал обновлять, либо он просто уснул.

ошибка в шрифте
Вероятность есть. Текущий шрифт я нашел вообще хз где. Я соберу для тебя демку с другим шрифтом, потестим.

Кто-то, протесть пожалуйста вот это: https://www.dropbox.com/s/ph7zd6y6uwn3njb/fungi.love?dl=0

Там Courier. Интересно как с ним будет работать.
Я мог бы и сам поменять шрифт (что уже делал один раз), но вот:
(https://i.imgur.com/rjlQcpW.png)
Очевидно, проблема в шрифте, которая проявляется только под GNU/Linux. Нужно смотреть, что с ним не так.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 04 Мая 2018 в 00:11
Кто-то, понял, спасибо. Попробую разобраться со шрифтом как нибудь.

У меня есть еще вопросик к вам, опять на счет рекордов.

Если честно, я не очень хочу интегрироваться со стимом в свете всех этих тотальных блокировок и отсутствия внятных биндингов для Lua.

Придумал вот такой вариант:
1) при выполнении задачи считаем хеш "программы".
2) Берем кол-во инструкций и шагов
3) Отправляем все это на сервер

Плюсы:
1) Это очень просто
2) Не нужно идентифицировать юзера

Минусы - я боюсь ситуации, когда попадется дотошный игрок и будет пилить кучу вариаций одной и той же программы, все более и более оптимизированной. Тогда в рекордах (на графике) будут только его результаты.

Блин, не уверен, что я понятно объяснил, и не уверен, что это вообще проблема.

Посмотрите с другой стороны - ну напилил чувак кучу вариантов более оптимизированных программ, разве мы не должны их сохранить? Это же отдельные, рабочие реализации...

Что скажете?


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Илья от 07 Июня 2018 в 22:59
Чуваки, я все таки хочу допилить эту игру и релизнуть ее в стиме, с рекордами и ачивками.
Сейчас я не могу это сделать, т.к. в луа непонятно как подключать стим да и вообще, луа мне не очень нравится.

Я хочу переписать игру, но хз какие технологии юзать, т.к. я не геймдевелопер, как я уже писал.
Я знаю, что стим легко интегрируется в проектах на плюсах и шарпе. Плюсы я не знаю, шарп я хотя бы для лабораторок в универе юзал, сейчас склоняюсь к нему, но! Я не очень хочу юзать юнити. Мне бы какой-то простой движок, типа того же Love 2D, только для шарпа.

Может подскажите че?

П.С. Раньше был XNA, но он, вроде, давно сдох.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Огион от 10 Июня 2018 в 14:51
Я слышал про Godot, но сам не пользовался. Вообще, твою игру должно быть несложно сделать с нуля на какой-нибудь игровой библиотеке: Allegro, SDL. SDL посложнее (вроде как), зато у него есть обёртка под C#, которую регулярно обновляют.


Название: Re: Fungeoid [игра для программистов, головоломка]
Отправлено: Кто-тo от 11 Июня 2018 в 00:53
SDL посложнее (вроде как)
SDL в плане графики является обёрткой к OpenGL, если не использовать встроенный функционал двухмерной отрисовки, который насколько я помню (SDL 1.2) довольно примитивен.
OpenGL будет слишком сложным для такой игры, а двухмерного функционала не уверен что будет достаточно.