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

Есть еще множество интересных игр. В этом году я думаю присоединиться к соревнованию. Надеюсь, времени хватит.

Комментариев: 11

11 Responses to “The power of 4k”

Комментарии:

  1. Ad_Astra

    Ого! Я даже боюсь спросить – за счёт чего достигается такая оптимизация :)

  2. juriy

    “Культурные” способы – сначала использовать обфускатор, который заменит названия методов и классов на “a”, “a2″ и.т.п, а затем заархивировать посильнее. Более извращенный способ – использовать несколько обфускаторов и посмотреть, какой из них даст результат лучше.
    Самый извращенный способ: писать весь код в одном классе, а еще лучше, в одном методе, но это уже изотерика.

  3. Ad_Astra

    Последний способ – антипаттерн Blob в чистом виде… :)

  4. juriy

    Ага. Но никто и не ставит цель написать чистый, понятный и легко поддерживаемый код. :-) Такие приложения пишутся за 15-20 часов единолично на один раз. Кстати, думаю, если то же самое описать “правильно” и “объектно-ориентированно” то выйдет раз в 10 больший архив. Но код будет…. хоть бери да StarCraft начинай писать :-)

  5. Vadim Voituk

    Первая игрушка сорвала весь рабочий день :)
    А на код можно взглянуть? До обфускации :)

  6. Evgenij Nerush

    Код в студию ))

  7. juriy

    Если-бы этот код написал _я_ – он был бы тут, рядом с постом.
    Код этих приложений я найти не смог, но вот несколько полезных ресурсов:

    http://www.mojang.com/notch/ – страничка талантливого GameDev разработчика, к некоторым игрушкам (4к) есть исходники.
    http://www.javagaming.org/index.php/topic,19461.0.html – страничка со списком “полезных ссылок” для участников 4k. Там же есть и ссылки на другие исходники.

  8. juriy

    Вот, кстати, результат работы за вчерашний вечер. Нужна java 1.6+ http://voituk.kiev.ua/demo/curling4k/curling4k.jnlp

    Идея – ремейк игры “кёрлинг”. Один игрок играет красными шарами, второй зелеными (шары пока меняются клавишами влево-вправо). Очки даются за шары, которые остановились в пределах мишени своего цвета. Можно пускать “свои” шары в чужую мишешь, чтобы “выбить” оттуда фишки противника.
    После 30 шариков будет ArrayIndexOutOfBounds :-)

  9. Артем Волхонский

    Это конечно не Java, но думаю будет всем интересно, вспомнить 3D-Shooter Krieger который весит 96 Кб. Секрет в том что он тянет ресурсы из DirectX. Ссылка для ознакомления и скачивания
    http://megaobzor.com/forum-top-20988.html

  10. Vadim Voituk

    Сегодня как раз закончился срок подачи заявок.
    Всего на конкурс было отправлено 67 игр

Leave a Reply