"Я знаю всё" : релиз и версия с открытым кодом!

Всем привет! Рады сообщить, что игра «Я знаю всё» теперь доступна в Steam! Сыграйте в эту викторину с поддержкой мультиплеера в одиночку, с другом или против компьютера, узнайте новые факты и протестируйте свою эрудицию!

"Я знаю всё" : релиз и версия с открытым кодом!

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

"Я знаю всё" : релиз и версия с открытым кодом!

Эта кнопка откроет стандартный диалог Steam, который может быть использован, чтобы пригласить вашего друга в игру при помощи соответствующей кнопки.

"Я знаю всё" : релиз и версия с открытым кодом!

Когда вы это сделаете, ваш друг получит сообщение с уведомлением и сможет подключиться к игре и поиграть с вами:

"Я знаю всё" : релиз и версия с открытым кодом!

Почему это важно? Почему просто не сделать список доступных игр? Всё очень просто: люди могут чувствовать себя некомфортно, ожидая оппонента неопределённое, часто достаточно долгое время. Конечно, это не проблема, если у вас есть большое сообщество игроков и, следовательно, большой онлайн, в этом случае вы сможете найти оппонента довольно быстро. Но это критично для маленьких инди-команд, где типичный онлайн вашей игры будет, вероятно, менее 10 человек. В нашем случае публичный список игр, в которых люди ждут оппонента, постоянно пуст, но люди всё же играют со своими друзьями, приглашая их в свои игры, о чём свидетельствует пополняющаяся таблица лидеров сетевой игры:

"Я знаю всё" : релиз и версия с открытым кодом!

Также я хотел бы поделиться с вами ещё одной новостью: несмотря на то, что полная база вопросов нашей игры доступна только в Steam-версии, вы также можете взглянуть на версию игры с открытым исходным кодом!

"Я знаю всё" : релиз и версия с открытым кодом!

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

Эта игра поддерживает многие функции Steam, такие как:

● Доски лидеров Steam

● Достижения Steam

● Поддержка многопользовательской игры при помощи P2P Steam API

Кроме того, эта игра кроссплатформенная (Windows, Mac и Linux) и поддерживает контроллер.

Эта игра использует несколько библиотек для Godot с открытым кодом:

GodotSteam (Интеграция со Steam)

GDSQLite (Поддержка базы данных SQLite)

Также эта игра может помочь вам с:

● Созданием пользовательских интерфейсов на движке Godot

● Переводом вашей игры на другие языки с использованием принятого в Godot подхода (файл interface.csv, содержащий перевод элементов интерфейса)

● Использованием в вашем проекте GDNative библиотек

● Созданием эффектов с использованием системы частиц (таких как салют)

● Использованием контроллера в вашей игре

● Различными хаками и трюками (например, получением полного пути к рабочей папке игры, чтобы иметь возможность использовать внешние файлы за пределами pck файла)

Надеюсь, эта информация была полезной для вас! В заключение, оставлю несколько ссылок на нашу игру.

Страница «Я знаю всё» в Steam:

Исходный код «Я знаю всё» на Github:

2828
2 комментария

Привет!
Из того, что сходу приходит в голову, хочется отметить следующее.
В текущей версии игры в базе данных каждому вопросу соответствуют свои четыре варианта ответа, что приводит к необходимости их вносить, даже если они уже были внесены (например, названия планет или имена писателей). На ранних этапах разработки игры была ещё идея сформировать некие древовидные категории ответов (например Космические тела -> Тела Солнечной системы -> Планеты солнечной системы -> Планеты-гиганты -> Юпитер), и затем, однажды заполнив это дерево ответов, повторно использовать их в разных вопросах. Это, несомненно, лучше с точки зрения недублируемости данных, но я столкнулся с проблемой того, что в реляционной БД сделать такую структуру довольно нетривиально (если интересно, можно почитать на эту тему в обсуждении по ссылке в конце, если вкратце, то есть разные решения, но все они компромиссные, в некоторых быстрое обновление базы, но медленное чтение, в некоторых наоборот). Поэтому я решил сделать всё проще и сделал как сейчас :)

В качестве альтернативы SQLite именно для вот такого решения задачи, с созданием иерархии категорий ответов, думаю, хорошо подошла бы какая-нибудь NoSQL база данных, допустим, Mongo или eXist, но, во-первых, я не нашёл библиотек для работы с этими базами из Godot, а во-вторых, как уже было сказано, решил не усложнять задачу и вообще отказаться от этой древовидной структуры.

Что касается поиска и сортировки, то пока что я, к сожалению, настолько глубоко в настройку БД не лез, понадеялся, что настройки по умолчанию будут работать нормально. В любом случае, вопросов в базе пока ещё не так много.

1

Привет. Большое спасибо за релиз игры и исходников.
Хотелось бы уточнить один момент. Игре, очевидно, очень подходит использование реляционной встроенной БДшки - можно удобно менеджить вопросы, проблемы с локализацией, судя по коду, решаются очень красиво и легко. Но интересно на что еще при разработке игры стоит обратить внимание помимо SQLite для управления большим колличеством подобных данных, с которыми часто приходится работать на высоком уровне (поиск по критериям, сортировка)? Может есть какие-нибудь еще решения? Я не говорю, что меня не устраивает это, просто хочу рассмотреть и альтернативы если имееются. Заранее спасибо!