29 апреля 2014 29.04.14 15 1910

TerraControl — аркада от начинающего разработчика

+6

Здравствуй, стопгейм.
Хочу представить тебе кривую, с неудобным и некрасивым интерфейсом, багованую, но всё же свою игру.

Начну издалека. Когда-то очень-очень давно загорелся я желанием, проведя кучу времени в Red Alert 2, сделать свою стратегию. На удивление быстро поняв, что это, вообще-то, сложно, я начал клепать на старом добром Game Maker какие-то маленькие игрушки. Само собой принялось решение стать программистом. А после того, как я увидел Minecraft, был выбран язык — Java.
Джаву я учил и забрасывал. А потом осенило, и я начал пытаться делать что-то осмысленное. В итоге, совершенно случайно поиграв в Монстерру на айподе знакомого и увидев, что ни на ПК, ни на андроиде такого нет, я понял, что настало время первого относительно серьёзного проекта. Так TerraControl (сокращённо терка) и получился.

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

1) Window size — размеры окна в пикселях
2) Level size — размеры уровня в клетках, только сервер и синглплеер
3) Address — IP сервера (первое окошко, только клиент), порт сервера (второе окошко, клиент и сервер)
4) Players — количество игроков, только сервер и синглплеер
5) Generator type — способ генерации уровня, только сервер и синглплеер
6) Randomizer seed — любой текст (берётся его хэш-сумма), который является основой для генератора псевдорандомных чисел (то же самое, что и сид в Minecraft). При вводе одинаковых сидов получаются одинаковые уровни, только сервер и синглплеер
7) End if captured 50% — заканчивать ли игру при захвате одним из игроков половины поля (победить другому уже невозможно)
8) Colors — цвета, используемые в игре, только сервер и синглплеер. Любое количество (меньше двух бессмысленно), шестнадцатеричный формат, разделяются пробелом. (ff0000 ff00ff ffff00 00ff00 00ffff 0000ff)

1) запускаем jar-файл
2) настраиваем
3) нажимаем Single player

1) для начала запускаем сам jar-файл
2) настраиваем
3) решаем, кто будет сервером, кто клиентами (если держащий сервер будет одним из игроков, то он должен запустить и клиент, и сервер)
4) нажимаем соответствующие кнопки (Client, Server)

Управление:
1) клик мышкой на цветной квадрат внизу — выбрать цвет и походить
2) колёсико мышки — приблизить/отдалить
3) стрелочки — пролистывание поля

Работает через хамачи (порт открывать не надо) и через внешний IP (порт открывать надо).

Скачать можно тут (по мере обновления ссылка остаётся та же).
Гитхаб, где можно посмотреть исходный код, чейнджлог по коммитам, а также написать о баге или даже форкнуть.


Лучшие комментарии

А ещё можно поиграть самому с собой...
… самому с собой...
...с собой...
Моя тульпа этого не оценит.
Нет, на гитхабе регаться не надо. Просто заходишь и смотришь.
А вот и обновление.

Почему так долго?


Сам чейнджлог смотрите под спойлером по коммитам, а я перечислю самое важное:
1) поддержка большого количества игроков (до максимального размера массива в Java)
2) более быстрая передача уровня, общее снижение количества трафика как минимум на 3 байта на сообщение
3) убран костыль-синглплеер, приделан нормальный синглплеер. Больше на занимает порт, не перекидывает сам себе уровень и не создаёт ничего лишнего и невидимого.
4) очень сильно перелопачен код, в основном в виде упрощений. Также создана основа для лёгкого добавления (но только через копание в коде) и выбора типа генератора уровня.
5) добавлено огромное количество комментариев к коду

Ура.
Переходишь по ссылке гитхаба -> папка src -> dyatel -> terracontrol. И там уже лежит часть файлов. Ты, видимо, не знаком с системой пакетов в Java.
Или проблема в чём-то другом?
Потом когда-нибудь добавлю ботов. А ещё можно поиграть самому с собой, запустив два клиента :D
Апдейт, которому будут рады все форевер элоуны!
В терке появился синглплеер. Хотя он и является огромным, кривым костылём (создаётся невидимый сервер и второй невидимый клиент, но с другой логикой), он вроде бы работает. Протестирован он плохо, поэтому жду отзывов о том, как он работает.

Из ещё чего-то хорошего — появилась возможность оканчивать игру при захвате кем-то больше, чем половины поля. По умолчанию включено.
Нет) Я просто тыкал чутка не на ту ссылку у файлика scr, и меня кидала не туда) Уже нашел, но так как именно с джавой плохо знаком, то понял мало)
Тем временем я выпустил небольшое обновление. Теперь, если при запуске клиента/сервера вылетает ошибка, не будет появляться раздражающее белое окошко (ну, которое не уведомление об ошибке, а сам клиент/сервер). А самое главное — я починил чёртов зум! Теперь при его изменении картинка будет статичной относительно центра. А ещё уменьшил количество обновлений в секунду.
Вскоре собираюсь добавить синглплеер, а так же ограничение FPS, дабы не загружать весь процессор.
Я такой скачал, хотел оценить, а там надо друга искать( Есть с кем заценить пока я не удалил файлик?)
И чтобы исходнички глянуть надо быть зареганым на гитхабе?
Плюс тебе, за энтузиазм и проделанную работу. :)
Итак, спустя более пяти недель, я всё же накатил апдейт.
Сначала не было времени, потом желания, потом идей.

Что новенького:
1) теперь используется столько процессорного времени, сколько нужно на обновление и рендер уровня, остальное освобождено
2) для ходов сделаны кнопочки вместо кликов по полю
3) возможность использовать сиды для рандома
4) два новых генератора уровня, симметричный (генерирует левую верхнюю четверть, отражая её на всё остальное поле) и линейный (искажённые полосы вдоль горизонтали)
5) по окончанию игры всё поле, исключая победителей, затухает

Ну а ещё, естественно, различные фиксы и правки.
Читай также