Простая коллекционная карточная игра

Всем привет! Меня зовут Вадим, и я разработчик игр - любитель. Инди разработчиком меня назвать нельзя, так как я на играх не зарабатываю. А PRO я был (работал в игровой студии) - последний раз больше 15ти лет назад. С тех пор и мир поменялся, и игры…

Разработка игр отнимает много времени и сил. С возрастом (у меня по крайней мере), этого становится все меньше и меньше. А игры делать все равно хочется. Вот и получается огромное количество наработок которые идут прямиком “в стол”.

Но иногда, появляется желание, с которым уже не возможно бороться. Так случилось, что неделей ранее у меня начался отпуск. Очередная партия в Master of Orion II на уровне impossible закончилась сокрушительным поражением компьютера.

Master of Orion II, Impossible, Silicoids, Large
Master of Orion II, Impossible, Silicoids, Large

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

Первым делом был написан диздок. Какая же игра без диздока? Он включал в себя описание правил игры и занял полстраницы. Если коротко - то я собрался делать довольно простую карточную коллекционную онлайн игру со следующими правилами:

  • У Игрока есть колода из 20 карт из них 3 карты на руке.
  • Каждый раунд игроки играют по одной карте с руки.
  • Выигрывает раунд игрок сыгравший сильнейшую карту. Она возвращается ему в колоду. Проигравшая карта из игры выбывает.
  • Сила карты определяется ее природой и различными бонусами.

Выглядит достаточно просто, не так ли?

Неприятности, поджидающие разработчика с диздоком в пол-страницы
Неприятности, поджидающие разработчика с диздоком в пол-страницы

В качестве платформы для разработки была выбрана Unity (бесплатно, стильно, модно, молодежно, работает всюду - по крайней мере мне так казалось). Сервер решено было делать на Node.js (С\С++ подзабыл, Java не знаю, да и с хостингом для Node.js как показала последующая практика - проблем нет).

Разработка пары классов поверх TCP\IP протокола, которые подружили C # от Unity и node.js не заняла много времени. И вот, к концу первого дня разработки между клиентом и сервером забегали первые пакетики.

Доброе Привидение
Доброе Привидение

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

Раз на Арт приятно смотреть - значит и работать с ним - приятно :) Карты придумывал и балансировал исходя из нарисованных картинок. Крыса сильнее Скелета, который сильнее Разбойника, который сильнее Шакала, который (вы не поверите) сильнее Крысы. Драконы самые сильнее и всех победят... почти.

Так как времени было совсем мало (одна неделя), а сделать предстояло достаточно много то приходилось следовать некоторым простым правилам:

  • Как можно реже запускать игру. Любой запуск для проверки написаного когда удлиняет срок разработки. Поэтому пишем код фичи от начала и до конца. На клиенте, на сервере. Запуск только после того, как фича полностью готова.
  • Не тратить время на отладку. Т.е. писать как можно более простой код, в котором, даже если и будут ошибки - их природа ясна будет сразу.
  • Срезать углы где только можно. Если рассматривать любую игру ААА класса - то можно увидеть с какой любовью там сделаны анимации любого вашего действия - будь то клик по кнопке или переход между менюшкам. В моей игре этого пока не будет.
  • Если где-то случался затык, переключаться на другую, задачу. Проблему “затыка” обдумывать в свободное от программирование время - например лежа на пляже и глядя на закат.
  • Стараться не изобретать велосипеды, гуглить и копипастить решения типичных вопросов.

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

cкриншот карты из игры: Шакал - карта природы, +2 при атаке магических существ и -1 против Войнов. Т.е. любой завалящий парень с дубиной его победит, в то же время маги - разбегутся в панике!
cкриншот карты из игры: Шакал - карта природы, +2 при атаке магических существ и -1 против Войнов. Т.е. любой завалящий парень с дубиной его победит, в то же время маги - разбегутся в панике!

Первая серьезная проблема меня ждала, когда я попытался запустить сервер в интернете. Дело в том, что я криворукий программист, а вовсе не DevOps. Последний раз линуксом баловался 20 лет назад. К счастью, Google меня до сих пор не забанил за нубские запросы, поэтому я смог “купить” сервер на Digital Ocean, подключить базу данных (Postgress), проапгрейдить версию node.js до последней, организовать забор исходного кода с GitLab. Наверное, стоило заморочиться с Kubernetes и continuous deployment - но это уже совсем высший пилотаж.

Естественно, игровой сервер не заработал :) Вернее он заработал, но был не доступен. Разумеется, я тут же полез настраивать файрволл и минут через 15 мне стал недоступен еще и сам сервер. Гугл помог и в этот раз. Дополнительный час танцев с бубном и оказывается что дело на в файерволе, а в том, что игровой сервер работает только с локальными подключениями. Одна строчка когда, а столько проблем…

Но беда не бывает одна: в WebGL нельзя работать напрямую с TCP\IP. Наверное, если бы я думал, прежде чем делать - то и сам бы догадался, что чудес в мире не бывает, но непоколебимая вера в кроссплатформенность Unity затмила мой разум. К моему счастью есть WebSockets. Опять Гугл. Опять поиск подходящего решения. Сотня дополнительных строк кода, несколько часов и вот, наконец, моя игра заработала в браузере и присоединилась к удаленному серверу.

Чем ответить на Летучую Мышь? Грабитель ее победит, у Скелета будет ничья, а Крыса проиграет...
Чем ответить на Летучую Мышь? Грабитель ее победит, у Скелета будет ничья, а Крыса проиграет...

Сегодня ровно неделя как я начал разработку этой игры и в нее уже можно поиграть здесь http://taucraft.com/wwc/index.html

Еще остались ошибки и множество недочетов, но есть рабочая платформа, которую можно будет потихоньку развивать в свободное время под настроение.

что дальше:

  • попробую запустить игру под какую-либо платформу. Чтобы был постоянный поток новых игроков.
  • ВСЕГДА есть идеи по развитию геймплея (мета игра, больше контента, гильдии, рэйдбоссы, квесты)
  • Может быть наконец соберусь монетизировать игру, чтобы гордо называться Инди :)

с удовольствием отвечу на ваши вопросы в комментариях.

Спасибо, что прочли!

Тролль
Тролль
6262
12 комментариев

Молодец, Вадим! Очень грустно когда игры идут в стол и не видят белого света. Желаю успеха и, самое главное, радости от процесса и конечного результата =)

5

Интересно, каким вообще людям нравится имя «Вадик»?

3

Отлично, Hearthstone больше не нужна.

2

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

1

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

Автор

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

1
Раскрывать всегда
Assassin's Creed Shadows стартовала с «очень положительными» отзывами в Steam — онлайн превысил 40 тысяч

У игры есть шанс побить рекорд Odyssey.

Автор скриншота: <a href="https://api.dtf.ru/v2.8/redirect?to=https%3A%2F%2Fsteamcommunity.com%2Fsharedfiles%2Ffiledetails%2F%3Fid%3D3448090918&postId=3651529" rel="nofollow noreferrer noopener" target="_blank">Vais Vargoroth</a>
282282
150150
1111
77
77
33
22
22
22
Хейтеры юбисофта, лицо к осмотру.
Вышел геймплейный трейлер PIONER — MMO-шутера от российских разработчиков

Релиз — в 2025 году.

126126
2929
66
44
22
22
11
11
11
11
11
11
В рф просыпается игрострой,спасибо IXBT games и шоу НАШЫ ИГРЫ
Painkiller, кооперативный шутер от Remedy и Reanimal: что показали на Future Games Show

Представили больше 50 игр — трейлеров очень много.

148148
66
55
44
44
33
11
11
11
Спасибо заранее за все ссылки и краткие описания того, что было!
Деми Мур опубликовала архивные семейные фото с Брюсом Уиллисом в честь его 70-летия

Похоже, легендарный актёр в хорошей форме, несмотря на серьёзный диагноз.

1K
159159
1818
1212
77
77
55
11
приятно видеть его счастливым, когда рядом такая заботливая семья
В Assassin's Creed Shadows уже сыграло более миллиона человек

Прямо в день релиза.

В Assassin's Creed Shadows уже сыграло более миллиона человек
144144
5454
66
33
33
22
Прекрасной игре -прекрасные продажи и прекрасные пользователи!)
Ремастер System Shock 2 выйдет 26 июня — трейлер

Дождались.

Ремастер System Shock 2 выйдет 26 июня — трейлер
112112
1313
1111
55
11
Фигня какая-то
Детали и системные требования ПК-версии The Last of Us Part II — для игры рекомендуется RTX 3060

Но минимально хватит и скромной GTX 1650.

Детали и системные требования ПК-версии The Last of Us Part II — для игры рекомендуется RTX 3060
214214
4242
88
44
44
11
11
11
11
Ну в это мы играем... а потом говним как только можем
Pixar анонсировала «Тайну Коко 2» — релиз в 2029 году

Первая часть получила «Оскар» как лучший анимационный фильм.

Pixar анонсировала «Тайну Коко 2» — релиз в 2029 году
120120
105105
1515
33
22
11
11
11
У бабушки Коко была вторая тайна, если тоже окупится то и третья, четвертая и тд)))
Tesla массово отозвала Cybertruck — внешняя отделка может отваливаться во время движения

Футуристичные пикапы продолжают преследовать неудачи.

Tesla массово отозвала Cybertruck — внешняя отделка может отваливаться во время движения
328328
1919
1111
66
22
11
11
11
11
11
Жители РФ больше всего переживают а че там у Теслы.
Fortiche выпустила клип на песню «Ma Meilleure Ennemie» из второго сезона «Аркейн»

Последний танец.

205205
2424
1313
33
22
11
11
11
11
великолепная песня, когда на работе на радио включают, сразу работать становится приятнее)
Huawei представила смартфон Pura X — «раскладушку» с соотношением сторон 16:10

Цена — от 7499 юаней или около 86 тысяч рублей.

Huawei представила смартфон Pura X — «раскладушку» с соотношением сторон 16:10
9595
2626
1414
66
22
22
22
Только хуавей даром никому не нужен
[]