BXJIAM

BXJIAM

На Пикабу
Дата рождения: 05 июня 1995
поставил 18 плюсов и 1 минус
Награды:
5 лет на Пикабу
210 рейтинг 1 подписчик 3 подписки 2 поста 2 в горячем

Первая работа в команде. Проект «Коммерсант»

О проекте.


Жанр: экономический симулятор.


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

Сутки в игре длятся 24 секунды, предусмотрены регулярно возникающие события развлекательного и экономического характера. Отличием от подобных разработок является реалистичная динамика биржевых цен и цен на недвижимость, влияние на игру экономических параметров.

Внедряется обучающая система, призванная показать опасность разрекламированного заработка на спекулятивных операциях с ценными бумагами. Обучение не должно быть нудным: мы стремимся балансировать между интересом и скукой, следуя правилу «развлекаюсь - учусь».

Ссылка на посвящённый идеям и разработке телеграм канал: https://t.me/comersnt


Пост предназначен исключительно для не имеющих или имеющих мало опыта в командной работе, а также всем, кому интересно прочитать ещё об одном пути в исследуемой теме. Никакой науки. Никакого Agile. Только личный опыт.

Часть первая. Погружение в историю.


В девяностых годах, десятиклассником, я познакомился с «Коммерсантом», знаменитой в то время игрой авторства Владимира Харченко. Отсиживался в оборудованном машинами Gold Star (ныне LG) компьютерном классе взамен уроков (кто сказал что я прогульщик?) и играл преимущественно в «Dangerous Dave» 1 и 2 части, да «Коммерсанта». Между делом, конечно же, изучал программирование на QBasic и Pascal (так что я не совсем прогульщик, а может даже совсем не прогульщик). Доброе время, светлые денёчки, всем привет.

Первая работа в команде. Проект «Коммерсант» Длиннопост, Gamedev, Libgdx, Приложение, Симулятор жизни, Android разработка, Биржа, Финансы, Экономика, Мат

Главное окно «Коммерсанта» 1991 года.


Ссылку на «Коммерса», как мы его называли, не вставляю. По поиску «играть онлайн коммерсант 1991» легко можно найти и запустить даже браузере. И никаких дискет 5.25.

Суть игры отражена в названии. Игроку необходимо богатеть, торгуя нефтью и землёй. Так сказать, основной способ заработка спекуляция.


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


Именно с тех самых времён голопузого моего детства за мной неотступно следует призрак «Коммерсанта», желание написать свою версию, своё «казино с блэк-джеком и дамами». Расширить и углубить, вникнуть и увеличить, показать и дать возможность.


Этим и занимаемся.

Часть вторая. Начало.


В 2020 году обсуждали идею с друганом, оба прониклись, заразились и преисполнились. Но незаконченные разработки, работа, текущие дела и прочая суета не позволяли засесть за детализацию. Но в декабре прошлого года пришло просветление и, наконец, сели за разработку «Коммерсанта».


Перво-наперво надо было понять, хватит ли у нас сил и умений реализовать задуманное. У обоих высшее экономическое образование, есть практическое понятие о рыночных процессах и даже можем отличить доллар от евро. Технически подкованы: я преподаю информатику, в то же время действующий разработчик; что такое алгоритмы и всякие структуры данных понимаю и оперирую. Единственный минус в том, что работал я всегда сам на себя и для себя, без командных проектов и без руководства. Работал больше для удовольствия и саморазвития, чем на коммерческой основе. Впрочем, здесь есть и плюс – никто не стоял над душой и не пугал сроками.


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

Первая работа в команде. Проект «Коммерсант» Длиннопост, Gamedev, Libgdx, Приложение, Симулятор жизни, Android разработка, Биржа, Финансы, Экономика, Мат

Схема проработки одного из многоступенчатых событий.


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


В чём я убедился на сегодняшний момент: долгие разговоры и обсуждения без каких-либо действий помогли внутренне осознать, к чему быть готовым и что предстоит. В том числе оценить объёмы расчётов, которых чуть меньше, чем дофига, и продумать алгоритмику.


Например, я долго ломал голову, как сделать «многоступенчатые события»: когда реакция на текущее событие вызывает то или иное следующее, каждое из следующих может также вызывать то или иное, и так далее по дереву вариантов. Но придумалось.


Опасно переоценить себя ровно настолько, насколько опасно и недооценить, но после обдумывания указанных вопросов я, по меньшей мере, знал, во что вписался.

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


Эти вроде бы простые выводы на самом деле заложили довольно серьёзную основу для действий. В процессе принимать решения приходится «на ходу», и здесь важно, чтобы каждый из нас владел ситуацией целиком и полностью.


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

Часть третья. Теоретическая практика.


В декабре 21-го года начали «давать продукт»: набрасывать первые варианты. Выбрали онлайн доску с возможностью лепить схемы и соединять их путеводными стрелками. И чтобы было бесплатно и красиво.


Заметил одну такую вещь: красиво (по своим меркам) и аккуратно нарисованное вдохновляет продолжать работу. Тогда как сваленная в кучу информация, набросанная «на коленке» только путает и раздражает, как беспорядок в доме.


Суровая реальность показала, что на 100% детализировать проект нам не удалось, тут бы хотя бы процентов семьдесят вытащить...

Первая работа в команде. Проект «Коммерсант» Длиннопост, Gamedev, Libgdx, Приложение, Симулятор жизни, Android разработка, Биржа, Финансы, Экономика, Мат

Первоначальная детализация данных биржи.


В процессе разработки (она сейчас в активной фазе) начали всплывать всякие мелочи, предвосхитить которые не хватило опыта.


Например, по плану «Кабак» должен поправлять настроение и немного снижать здоровье игрока безальтернативно, в момент посещения. Когда начали реализовывать, то пришли к мнению, что удобней предоставить игроку выбор «из меню». Подешевле – водочка, подороже – коньячок. Размер настроения и здоровья меняется в зависимости от выбранного. Но основная идея кабака сохранилась, что уже хорошо.

Первая работа в команде. Проект «Коммерсант» Длиннопост, Gamedev, Libgdx, Приложение, Симулятор жизни, Android разработка, Биржа, Финансы, Экономика, Мат

Одна из версий главного экрана.


Нас спасло то, что мы следовали советам «из учебников» и не ленились тратить время на работу над схемами и прототипами. Затраченное окупилось организационным преимуществом и тем, что вся наша команда чётко понимает, что мы делаем. И даже отчасти «видит» в виде схем и графиков. Безусловно, можно доносить смысл проекта словами, жестами и энергичным матом. Но лучше один раз увидеть...


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


Как работали над частями целого? Первым шагом описываем абстрактные механики (например, «Глобальные цели», которые должен профинансировать игрок для победы), после начинаем их детализировать. Надеюсь, что к финалу схема изменится не принципиально, а лучше не изменится вообще. Коней же на переправе не меняют, в конце концов.

Первая работа в команде. Проект «Коммерсант» Длиннопост, Gamedev, Libgdx, Приложение, Симулятор жизни, Android разработка, Биржа, Финансы, Экономика, Мат

Одна из глобальных целей и этапы для её достижения.


Очертили границы? Детализируем каждую подцель. Например, финансирование проекта «Светофор на перекрёстке» потребует порядка 50000 единиц внутриигровой валюты и две внутриигровых недели на реализацию (а как долго ставят светофор в реальности?)


Итого: в разработке нам очень помог онлайн сервис, где чертили схемы и диаграммы. Описали всё, что только возможно – в цифрах, примерах, расчётах на Python (для отслеживания зависимостей). Даже проработали изменение биржевых цен и построение графиков.


Пусть код на Python не попадёт в андроид-версию, но зато мы увидели на графиках, как поведут себя цены при работе наших алгоритмов. И заранее скорректировали.

Часть четвёртая. Практическая практика.


Для реализации решили использовать Java и Android Studio, плюс движок LibGDX.


Можно долго спорить на счёт целесообразности инструментов. Отмечу лишь, что выбор обусловил опыт разработки именно с помощью указанного. Будем делать с минимальным привлечением сторонних библиотек, контролируя каждый шаг алгоритма. К тому же, у нас в планах реализовать только минимально рабочую версию (MVP). Надо обрести осознание, насколько интересным выйдет продукт и, если что, продолжить его, расширяя и углубляя хотя бы по графике.


Почему не Unity? Мне кажется оно громоздко и не даёт полного контроля над обработкой данных так, как нам надо. Да и опыта в Unity совсем мало.

Первая работа в команде. Проект «Коммерсант» Длиннопост, Gamedev, Libgdx, Приложение, Симулятор жизни, Android разработка, Биржа, Финансы, Экономика, Мат

Часть схемы биржевых фаз и расчёта динамики стоимости активов.


В процессе расчёта формул и создании механик первое, с чем мы столкнулись, - нехватка информации. И непонимание, насколько наша идея «зайдёт», особенно во времена всеобщей любви к разного рода «три в ряд», «шарикам», «собери слово» и разным кликерам. Но сомнения оставили. Раз лично нам идея нравится, значит, она понравится ещё хотя бы одному человеку. Будем самореализовываться, выражая свои интересы и стремления.


Но замечу, что коммерческую составляющую (при разработке «Коммерсанта», ага) мы не просчитывали «от и до», проект отчасти носит энтузиастовый... энтузиазный... энтузиазочный характер.


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


Надо признать, что отзывы до реализации офигенная штука. В своё время демо-проектом я разрабатывал (опубликовано в Google Play) «Супер-защитник Земли от хищных инопланетян» на манер Space Invaders. Когда код был готов и протестирован, создал чат с посылом «подскажите, что ещё можно сделать». И поразился до глубины души (в положительном смысле), когда мне посоветовали внедрить боссов (привет, Андрей!) и добавить настраиваемую вибрацию на выстрелы и смерть врагов (привет, Илья!) (Подсказали ещё с десяток улучшений, перечислять их уже не буду). Всё успешно внедрено и реализовано, благо архитектура кода позволила сделать это без глобальной перекройки.


Так вот. Поразило меня то, что я вроде бы и сам знал, что можно сделать «боссов», понимал, как реализовывать вибрацию, но в голову не приходило вставить эти механики в игру! Почему – без понятия. Вот просто мозг не сработал. Супор какой-то. Чёрная дыра. Задним умом сижу думаю, блин, да вообще на изичах можно прописать боссов, вибрацию, дополнительные настройки, а в момент разработки идеи игры и написания кода вообще на ум не пришло!

Первая работа в команде. Проект «Коммерсант» Длиннопост, Gamedev, Libgdx, Приложение, Симулятор жизни, Android разработка, Биржа, Финансы, Экономика, Мат

Босс в «Супер-защитнике…»


Если первой трудностью выступает нехватка информации, то второй выделю отсутствие дизайнера и звукорежиссёра. Мы, одинокие разработчики, в душе своей универсальны – и музыку пишем, и картинки какие-никакие рисуем (или знаем, где скачать). И код тестируем, и правим, и ругаемся. Но для идеи «Коммерсанта» нужны более-менее профессионалы, а не нарисованные хвостом непокорного мула иконки, кнопки и пиктограммы.


Профессионалов нанять в нашем случае не по карману, поэтому обратились с просьбой на посвящённом разработке игр форуме. Несколько дней переписок и договариваний на переправе, - и в команде появились ещё два человека.


С этого момента можно начинать реализацию. В нашем активе долгие беседы, выстраданные правила, оговоренные сомнения, рождённые и умершие идеи, решённые и не очень проблемы, проведённый анализ схожих продуктов. Плюс целая куча тестового кода, схем, диаграмм, путеводных стрелок, точек, заметок, комментариев, созвонов, сообщений в мессенджерах. И есть дизайнер и звуковик. Уиии! Ещё на шаг ближе к блэк-джеку с дамами.


В общем, приобрёл опыт. Пусть не останавливает то, что вы сами не обладаете в нужной мере какими-то навыками. Если поступить с умом, то можно найти себе в проект неравнодушных людей, которым требуется портфолио/пет-проекты и/или практика. А то и удастся найти спецов, вдохновлённых идеей.


Задумку надо обязательно обсуждать, показывать её, сообщать о неё. Да, будут и негативные отзывы, но в таких случаях я вспоминаю фразу Гёте: «Самое смешное желание - это желание нравиться всем». Не надо нравиться всем. Ерунда это. Люди имеют право не любить и меня, и мои идеи, как бы это иронично не звучало. Важно лишь, чтобы идея нравилась самим, чтобы был хотя бы один единомышленник. Но написанное отнюдь не означает, что нужно игнорировать мнения, ведь мы делаем не для себя, любимых, а стараемся заинтересовать как можно больше людей!

Часть пятая. Организационные трудности.


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


Конечно, обсуждения в дискорде, рисование указующей рукой в пэинте и попытки донести «как именно должно быть» корректировало работу. Но в конце концов мы приняли важное, как я считаю, решение - разделить области ответственности: разработчики разрабатывают (это мы), идеологи проекта продумывают внутренности (это тоже мы), художник – рисует, а звукорежиссёр занят звуками. Стараемся не лезть на территорию друг друга, во главу угла поставив правило обсуждать и исправлять, а не продавливать и настаивать.


У нас нет UI/UX дизайнера, поэтому приходится делать всё самим. Основываясь на опыте и понимании прекрасного, вдвоём с друганом размечаем экраны в известном приложении на «ф». Далее экраны попадают в руки художника, которая вносит свои замечания и вчерновую рисует необходимое. После черновиков обсуждаем, пойдёт или нет, а дальше каждый занят своим делом.

Первая работа в команде. Проект «Коммерсант» Длиннопост, Gamedev, Libgdx, Приложение, Симулятор жизни, Android разработка, Биржа, Финансы, Экономика, Мат

Экран поликлиники «до» и «после». Возможно (надеюсь, нет), что он ещё изменится.


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


Помимо описанного, важно иметь или уметь придумать на ходу чёткий план действий. Нарисовали и реализовали в коде главный экран – а что дальше? Кабак или поликлиника? Или биржа? Или книжный магазин? Воистину, нужно быть не только хорошим специалистом в области управления, но и необходимо понимать логику и последовательность (в плане удобства) при разработке алгоритмов.


С другой стороны, программисту и художнику можно работать независимо. Для этого потребуется потратить тысячу семьсот триста двести восемьсот часов и подготовить всевозможные экраны, указав на них хотя бы приблизительное расположение объектов.


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

Первая работа в команде. Проект «Коммерсант» Длиннопост, Gamedev, Libgdx, Приложение, Симулятор жизни, Android разработка, Биржа, Финансы, Экономика, Мат

Экраны перехода в локации в зависимости от наличия у игрока автомобиля.


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


Здесь следующий вывод: нужно делать как можно больше «скелетов» - разметок, набросков, формул, расчётов, которые пусть потом изменяются с допуском плюс/минус в десяток процентов. Дизайнеры и художники должны иметь точное представление что им и в каком стиле отображать: подойдут скрины других разработок, на которые хочется быть похожими.

Так что если готовы реализовать свой командный проект – сделайте опорный материал для единомышленников.

Часть шестая. Мотивация.


Зарплата работающим над проектом людям неоспоримый инструмент и мотивация. В конце концов, это некий дополнительный пряник, который легко откусить или добавить. Но, как говорится, с деньгами и дурак сможет.


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


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


Пусть хотя бы символически.

Первая работа в команде. Проект «Коммерсант» Длиннопост, Gamedev, Libgdx, Приложение, Симулятор жизни, Android разработка, Биржа, Финансы, Экономика, Мат

Толком ничего ещё не сделано, а количество обслуживающих классов зашкаливает.


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

Часть седьмая. Обобщение.


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


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


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

Первая работа в команде. Проект «Коммерсант» Длиннопост, Gamedev, Libgdx, Приложение, Симулятор жизни, Android разработка, Биржа, Финансы, Экономика, Мат

Экран кабака. А сегодня пятница... Не пора ли за здоровье?


Словом, если есть желание делать и воплощать – делайте и воплощайте! Это аксиома. Лучше проиграть в реальном споре, чем вести спор внутренним голосом.


А мы продолжаем тянуть лямку реализации, «дневник разработчика», события и новости ждут вас в канале (ссылка в начале поста), лично приглашаю вас поучаствовать, поделиться опытом, сделать замечания или просто понаблюдать, как оно происходит в реальности. Добро пожаловать, и спасибо за внимание, дорогие пикабушники! Буду держать вас в курсе!


P.S. Тут такой внутренний голос – ну ёпта, можно было ограничиться текстом седьмой части, просто обобщить и не плодить простыни, загаживая интернет рассказами о себе.


A.P.S. Нет. Было написано в надежде, что кого-нибудь вдохновит реализовывать свою мечту, побудит к действию и в мире станет больше прекрасных игр, разработок и вообще всего!

Показать полностью 11

Как чувак (я) головоломку придумывал...

Всем принтов, здравствуйте!


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


В последние несколько лет замечаю ужасную, с моей точки зрения, тенденцию. Даже ученики десятого-одиннадцатого класса очень слабо разбираются в арифметике. «Не чувствуют числа», я себе так говорю. Школьники помладше - там вообще тёмный лес. Без калькулятора большинство из них мало на какие вычисления способны :(


Дело даже не в знании формул и каких-то манипуляций с этими самыми формулами. Проблемой является элементарное неумение считать «на лету» без калькулятора, хотя бы числа в пределах сотни-другой. А в программировании много математики, и от меня требуют детей научить. Нет, слово «требуют» - это одна сторона вопроса, скорее, официальная. Мне самому, как преподавателю, приятно, когда мои же воспитанники делают успехи, добиваются, удивляют... и когда с ними можно начать обсуждать и продвигать какие-то интересные идеи в коде.


Решил встать на святой путь борьбы за сильную арифметику. Как? Сделать головоломку! Суть которой достаточно проста - манипулируй числами и добивайся единичек. Механика проста: есть два вида чисел - оранжевые и синие. Оранжевые, тёплые, - положительные числа. Синие, холодные, отрицательные.

Как чувак (я) головоломку придумывал... Android, Libgdx, Java, Приложение на java, Длиннопост

То есть если к положительному 15 прибавить отрицательное 3, то результатом будет 12. А если прибавить отрицательное 14, то получится искомая единица.


Комбинации могут быть совершенно простыми (на первых уровнях), и неявными, требующими некоторых перестановок. Например, суммирования чисел 3, 4, 5 и вычитания из результата числа 11: вжух! Появилась единица.


Операции инициируются перетягиванием чисел одно на другое; под игровым полем есть очередь следующих чисел.

Как чувак (я) головоломку придумывал... Android, Libgdx, Java, Приложение на java, Длиннопост

Чтобы немного разнообразить игру, ввёл «инверсию». Это поле, получающееся при результате -1 (например, +10 -11). Предназначение поля - инверсия знака перемещённого на него числа.


Чтобы усложнить процесс - ввёл правило: единица должна быть получена не позднее, чем за три перемещения. Иначе проигрыш. И получать единицы можно только на определённых местах, они обозначены зелёными линиями под фишками (горизонталь и вертикаль, горизонталь и вертикаль без угловых, главная и побочная диагонали в зависимости от сложности).

Как чувак (я) головоломку придумывал... Android, Libgdx, Java, Приложение на java, Длиннопост
Как чувак (я) головоломку придумывал... Android, Libgdx, Java, Приложение на java, Длиннопост
Как чувак (я) головоломку придумывал... Android, Libgdx, Java, Приложение на java, Длиннопост

Искренне надеюсь, что эта нехитрая головоломка по самопальным правилам немного разовьёт чувство числа у детей (да и у взрослых), буду благодарен за подсказки и комментарии.


Технически: реализовано на LibGDX. Текстуры, звуки, вся «анимация» - моё, из инструментов Android Studio, Gimp и Audacity. Предложил друзьям написать музыку, что они и сделали (спасибо большое!)


Схематично алгоритм прост. Есть двумерный массив, хранящий классы фишек. Числа для всех, кроме последнего, уровней берутся из заранее подготовленных «датасетов» (слово громкое).

Уровень с рандомом - генерация с таким расчётом, чтобы при математике всех присутствующих в игре чисел всегда получалась единица.


И дальше в ход вступает элементарное перетаскивание объектов. Сложностей, в общем, не возникало. Самое длинное по времени - около двух недель - обрабатывал правила головоломки, чтобы они стали интересны хотя бы мне :)


Алгоритм и реализация не так сложны, как рождение идеи и правил головоломки.

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


Перешёл на "сложение и вычитание", ввёл экспериментальные «бриллианты», появляющиеся в том случае, если в результате операции получался ноль. Но что с этим нулём делать так и не придумал, выпилил (закомментировал). Сейчас нули получать нельзя.


Первоначально «инверсия» работала как «чёрная дыра». Суть «чёрной дыры» заключалась в «проглатывании» единичек. Обобщённое правило звучало так: надо получить единицу, закинуть в чёрную дыру и так 15 раз. Было довольно сложно, ведь сначала надо получить чёрную дыру, потом единицу... даже я, не жалующийся на арифметику, дымился в поисках комбинаций так, чтобы за три хода была сделана либо дыра, либо единица.


Механику выпилил (закомментировал :D)


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


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

Как чувак (я) головоломку придумывал... Android, Libgdx, Java, Приложение на java, Длиннопост

В общем, мораль истории проста: не так сложно реализовать игру, как придумать и продумать идею, которая будет более-менее работоспособна.


А ещё большая мораль: продумывайте всё от начала и до конца! Иначе уложите кучу времени на доделки и переделки.


Затрачено времени: две недели на программный код и валяние на диване с тестированием программы, две недели на идею, в итоге проект забрал месяц работы по вечерам.


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


Игра бесплатная, но с рекламой перед запуском, начиная со старших уровней. Страница головоломки в Google Play: https://play.google.com/store/apps/details?id=ru.vgtrofimov....

Показать полностью 6
Отличная работа, все прочитано!