Проекты
GameDev.ru / Проекты / Форум / Fungeoid [TIS-100/головоломка/пазл/игра для программистов]

Fungeoid [TIS-100/головоломка/пазл/игра для программистов]

Страницы: 1 2 Следующая »
BizunowПостоялецwww15 апр. 201816:25#0
Описание
Пару лет назад я наткнулся на игрушки TIS-100 и MHRD, поиграл, понравились.
Долго вынашивал идею, что можно сделать в таком же духе, "для программистов". Вспомнил про эзотерические языки, в частности, про Befunge.
Язык интересный, стековый, двумерный. Решение даже тривиальных задач на нем отличает от привычного программирования.
Подробное описание языка Befunge в вики: https://ru.wikipedia.org/wiki/Befunge

Глобальные планы
1) Довести проект до играбельного состояния
2) Прикрутить онлайн-рекорд
3) Накодить кучу задач разной сложности
3) Релизнуться в стиме (и заработать миллионы)

Скриншот от 15.04.18:

+ Показать

Демка
Я пока не разобрался, как делать бинарники в LOVE2D, так что, вот love-файлик:
https://www.dropbox.com/s/b66e4j9n6qx6f6y/fungi.love.zip?dl=0

Правка: 19 апр. 2018 22:08

BizunowПостоялецwww15 апр. 201816:26#1
Напишу сразу, на счет демки и управления - я специально ни чего не написал, т.к. мне интересно, сможете ли вы разобраться.
Если нет, то хз, придется какой-то туториал делать.
BizunowПостоялецwww18 апр. 20189:23#2
Я уже задавал этот вопрос на соседнем форуме, но все же, задам и здесь - как реализовать онлайн таблицу рекордов так, чтобы мамкины хакеры не слали туда свои "результаты"?

У меня, изначально, была мысль сделать на сервере интерпритатор Befunge и слать туда не результат, а программу.
Программа выполняется, кол-во ходов и инструкций пишутся как результат.
Это идеальный вариант, за исключением пары моментов:
1) На сервере придется реализовать пол игры
2) Если будут хоть малейшие расхождения в реализации интерпритатора в игре и на сервере - будет ад
3) Выполнение программы это не всегда быстро
4) Нужно будет придумать какой-то механизм для отслеживания бесконечных циклов

В общем, этот вариант довольно сложен в реализации.

Мне предлагали использовать подпись - хеш+соль. Это просто и понятный вариант, но проблема в том, что игра пишется на LOVE2D.
Игра на LOVE2D - просто zip-архив с исходниками.
Т.е. и хеш, и соль без проблем можно узнать.

Есть ли еще какие-то варианты?

iKestПостоялецwww18 апр. 20189:49#3
Сделать систему рейтингов результата. Т.е. любой участник может проверить код из таблицы и поставить +/-. Можно даже присваивать за эти проверки звания (новичек, тестер-маньяк, гуру и т.п.). При достижении определенного количества минусов - дропать рещультат из книги рекордов...
BizunowПостоялецwww18 апр. 201810:06#4
iKest
Хм, это довольно интересный вариант. Можно после прохождения задания давать возможность игроку посмотреть на чужие реализации, потыкать их, изучить и оценить. Было бы збс, да.
MadwareУчастникwww18 апр. 201810:36#5
Bizunow
> Это идеальный вариант, за исключением пары моментов:
> 1) На сервере придется реализовать пол игры
> 2) Если будут хоть малейшие расхождения в реализации интерпритатора в игре и на
> сервере - будет ад
> 3) Выполнение программы это не всегда быстро
> 4) Нужно будет придумать какой-то механизм для отслеживания бесконечных циклов

Ты можешь обойти большую часть этих проблем, реализовав весь код игры на сервере, и используя клиент только как рисовалку.
Up: А на клиенте у тебя бесконечные циклы считаются чем-то нормальным? Ты всегда можешь сделать простое ограничение по таймауту

Правка: 18 апр. 2018 10:37

kiparУчастникwww18 апр. 201810:56#6
Madware
> обойти большую часть этих проблем, реализовав весь код игры на сервере, и
> используя клиент только как рисовалку.
Возможность игры без инета по-моему важное свойство для головоломок. Лучше просто реализовать интерпретатор на сервере.

Я так понимаю основная проблема в том сервер на бесплатном хостинге и потому реализовывать на на пхп, с платным можно было бы просто клиент игры на сервере запускать.

BizunowПостоялецwww18 апр. 201811:05#7
Madware
> Ты можешь обойти большую часть этих проблем, реализовав весь код игры на
> сервере, и используя клиент только как рисовалку.
Не, я вообще считаю, что чем меньше игра зависит от инета, тем лучше. Даже для таблицы рекордов я со временем создам "локальную" версию, которая и без инета будет работать.

kipar
> Я так понимаю основная проблема в том сервер на бесплатном хостинге и потому
> реализовывать на на пхп, с платным можно было бы просто клиент игры на сервере
> запускать.
Да, все так. Если бы можно было пускануть lua-скрипт, ни каких проблем бы не было.

Правка: 18 апр. 2018 11:11

BizunowПостоялецwww18 апр. 201811:22#8
Madware
> Up: А на клиенте у тебя бесконечные циклы считаются чем-то нормальным?
На клиенте это не проблема, пользователь сам видит, что программа зациклилась и выключает ее.
MadwareУчастникwww18 апр. 201812:24#9
Bizunow
> Я уже задавал этот вопрос на соседнем форуме, но все же, задам и здесь - как
> реализовать онлайн таблицу рекордов так, чтобы мамкины хакеры не слали туда
> свои "результаты"?
Как альтернативу можно еще взять готовый сервис типа PlayFab SDK
BizunowПостоялецwww18 апр. 201822:09#10
Сегодня сделал отображение текущей позиции в списках входных и выходных данных.
Указатель стоит на следующем числе, которое будет передано в программу и, соответственно, на следующем числе, которое должно быть возвращено программой.

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

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

+ Показать

Правка: 18 апр. 2018 22:09

BizunowПостоялецwww19 апр. 201822:08#11
Я таки сделал новое задание и демку =)

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

Мое решение под спойлером (как всегда, без намека на оптимизацию):

+ Показать

И новая демка, для запуска нужен LOVE 11/11.1:
https://www.dropbox.com/s/b66e4j9n6qx6f6y/fungi.love.zip?dl=0

Правка: 19 апр. 2018 22:09

BizunowПостоялецwww20 апр. 201819:39#12
Подкинете идей для задачек?

Сейчас есть три готовых задачи (правда, выбора задач все еще нет =))
1) Умножение чисел на два
2) Нахождение ABS
3) Нахождение длины последовательности

В запасе:
1) Нахождение min и max числа в последовательности
2) Сортировка последовательности
3) Вывести обратную последовательность
4) Нахождение подряд идущих одинаковых чисел

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

Правка: 20 апр. 2018 19:39

BizunowПостоялецwww21 апр. 201823:42#13
Подумываю сделать вот такое меню:
+ Показать

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

П.С. Я создал группу, заходите: https://vk.com/fungeoid

BizunowПостоялецwww30 апр. 201823:45#14
Новая демка:
0) Теперь можно писать самомодифицирующийся код
1) Редактор и меню используют мой недо-css-движок (Об этом ниже)
2) В менюшке можно выбирать задачи
3) Новая задачка, на нахождение минимального и максимального числа

https://www.dropbox.com/s/5zy5ibgmu8njpsr/fungi.love?dl=0
Для запуска все так же юзайте LOVE 11.1, а завтра я таки напишу скриптик для сборки бинарников.

Про недо-css-движок:
Пока я кодил меню, я запарился писать формулы для расчета положения и размеров блоков.
Я попытался как-то упростить прототипирование и получился сабж.
На вход подаем вот такую схему:

+ Показать

И на выходе имеем вот такое меню:
+ Показать

Получилась какая-то смесь флексбоксов и гридов, но работает классно, я доволен =)

П.С. Задачка с min и max получилось чет через чур сложной. По крайней мере, мне так кажется. Я решал ее часа 2, в итоге получил дико громоздкое и тормозное решение. Под спойлером решение.

+ Показать

П.П.С. 4500 шагов и 67 инструкций, ужас.

Страницы: 1 2 Следующая »

/ Форум / Проекты / Оцените

2001—2018 © GameDev.ru — Разработка игр