The power of 4k
Рубрика: Development, Java | 27 November 2008, 11:25 | juriy
Уже много-много времени я увлекаюсь разработкой игр на Java. Да что тут говорить, мое первое приложение на Java была мини-игра для мобильного телефона Siemens M55, моя первая постоянная “программистская” работа была тоже связана разработкой игрушек на Java.
Эта заметка посвящена ежегодному событию, которое проходит по инициативе www.javagaming.org – состязанию Java 4k. Правила очень простые – необходимо сделать интересную игру на Java, так чтобы размер архива (jar) с игрой (и всеми ресурсами) не привышал 4 килобайта. Трюки вроде “напишу-ка я на 4 кб загрузчик, который подтянет с сайта мой 50-мегабайтный движок” не проходят.
Естественный вопрос: “что, черт побери, можно написать на 4 килобайта?”. Чтобы на него ответить достаточно взглянуть на игрушки прошлых лет:
Победитель прошлого года, простая, но интересная аркада:
![]() |
Spiderball4k |
![]() |
А эта игра потрясет любого: изометрическая Real-Time стратегия, где есть разные юниты, можно строить здания, добывать ресурсы и воевать с AI! Комментарий к этой работе с форума javagaming выражает основную мысль как нельзя лучше: “Hey, where did you put other 100k?!” T4anks |
Есть еще множество интересных игр. В этом году я думаю присоединиться к соревнованию. Надеюсь, времени хватит.



Ого! Я даже боюсь спросить – за счёт чего достигается такая оптимизация :)
“Культурные” способы – сначала использовать обфускатор, который заменит названия методов и классов на “a”, “a2″ и.т.п, а затем заархивировать посильнее. Более извращенный способ – использовать несколько обфускаторов и посмотреть, какой из них даст результат лучше.
Самый извращенный способ: писать весь код в одном классе, а еще лучше, в одном методе, но это уже изотерика.
Последний способ – антипаттерн Blob в чистом виде… :)
Ага. Но никто и не ставит цель написать чистый, понятный и легко поддерживаемый код. :-) Такие приложения пишутся за 15-20 часов единолично на один раз. Кстати, думаю, если то же самое описать “правильно” и “объектно-ориентированно” то выйдет раз в 10 больший архив. Но код будет…. хоть бери да StarCraft начинай писать :-)
Первая игрушка сорвала весь рабочий день :)
А на код можно взглянуть? До обфускации :)
Код в студию ))
Если-бы этот код написал _я_ – он был бы тут, рядом с постом.
Код этих приложений я найти не смог, но вот несколько полезных ресурсов:
http://www.mojang.com/notch/ – страничка талантливого GameDev разработчика, к некоторым игрушкам (4к) есть исходники.
http://www.javagaming.org/index.php/topic,19461.0.html – страничка со списком “полезных ссылок” для участников 4k. Там же есть и ссылки на другие исходники.
Вот, кстати, результат работы за вчерашний вечер. Нужна java 1.6+ http://voituk.kiev.ua/demo/curling4k/curling4k.jnlp
Идея – ремейк игры “кёрлинг”. Один игрок играет красными шарами, второй зелеными (шары пока меняются клавишами влево-вправо). Очки даются за шары, которые остановились в пределах мишени своего цвета. Можно пускать “свои” шары в чужую мишешь, чтобы “выбить” оттуда фишки противника.
После 30 шариков будет ArrayIndexOutOfBounds :-)
Это конечно не Java, но думаю будет всем интересно, вспомнить 3D-Shooter Krieger который весит 96 Кб. Секрет в том что он тянет ресурсы из DirectX. Ссылка для ознакомления и скачивания
http://megaobzor.com/forum-top-20988.html
Сегодня как раз закончился срок подачи заявок.
Всего на конкурс было отправлено 67 игр