Быстрая операционная система для бизнеса и хобби
89,90
рейтинг
13 ноября 2014 в 06:17

Разработка → «Напиши свою игру!» — Новогодний конкурс от KolibriOS

Новый Год уже не за горами, а какой же Новый Год — без новогодних конкурсов с подарками? Мы в проекте KolibriOS решили не отходить от традиции, и провести наш собственный конкурс, с денежными призами.

Поскольку находимся мы на Хабре, простой случайный розыгрыш призов вроде конкурса от Mail.Ru мы считаем здесь неуместным, и призы нужно будет заработать. Поскольку KolibriOS — хобби-проект, конкурс будет связан с развлечениями. Ну, а поскольку мы не такие богатые, как Mail.Ru, то и призы будут поменьше :-)

Задачей конкурса является написание своей собственной игры для Колибри. Сделать это нужно до наступления Нового 2015-го года по московскому времени, т.е. до 31 декабря 2014г. 24:00 MSK.

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

Для игры можно использовать любой язык программирования — хоть FASM (предпочтительно), хоть JAVA, хоть Brainfuck. Однако, если компилятор выбранного вами языка в данный момент отсутствует под Колибри, вам придётся сначала научить этот компилятор собирать программы под Колибри. Поэтому мы рекомендуем выбрать такой язык, для которого уже есть компилятор (для Brainfuck, кстати, есть).

Исходный код игры (включая все «ресурсы» — картинки, спрайты, звуки, музыку, если таковые имеются) должен быть выложен на SVN проекта под одной из утверждённых open-source лицензий. Игра должна компилироваться из исходников с помощью системы авто-сборки Tup на сервере КолибриОС. Для облегчения добавления игры в авто-сборку (а также принимая во внимание предыдущий параграф), лучше всего писать игру на языке, для которого уже есть пример авто-сборки (FASM, NASM, C--, GCC, MSVC). Но мы же не ищем лёгких путей, правда?

Игры всех участников, успешно выполнивших задание, будут выставлены на голосование на Хабре в январе 2015 г. По результатам голосования, будут присуждены призы:

  • 1 место — $1,000 США
  • 2 место — $500 США
  • 3 место — $250 США


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

P.S. Кстати, мы до сих пор не можем связаться с победителями нашего прошлого конкурса — x128 и GoLiaF — так что, если кто-то из вас двоих сейчас читает эти строки, просьба связаться с нами для получения ваших призов.

FAQ / ЧаВО:


  • Можно написать такую игру, которая уже есть в Колибри. Можно, но неинтересно.
  • Можно портировать существующую игру, написанную вами раньше (при условии соблюдения всех остальных правил), но нельзя портировать игру, написанную кем-то другим. Т.е., если PapaBubaDiop захочет портировать свою «Поле Чудес», то это можно. А если его «Поле Чудес» захочет портировать кто-то другой, то нельзя.
  • Можно публиковать незаконченную игру на нашем форуме для бета-тестирования её участниками проекта. Исходники при этом показывать необязательно. Но для участия в конкурсе исходники должны появиться в авто-сборке до Нового года.
  • Можно задавать на нашем форуме и на Хабре вопросы, возникающие при написании игры, но для ответа на некоторые из них, мы будем просить показать код.
  • Можно (и даже нужно) указывать нам на баги в ядре и драйверах Колибри, которые мешают вам написать игру, но мы не обещаем, что исправим их до Нового года.
  • Игра должна не только компилироваться авто-сборкой, но и работать в Колибри (спасибо, кэп!). Версия авто-сборки Колибри, в которой игра работает, должна быть выпущена между сегодняшним днём и Новым годом. Иными словами, не делайте игру под Kolibri 0.6.5.0, выпущенную 14/02/2007.
  • Существующие участники проекта КолибриОС имеют право участвовать в конкурсе на общих условиях, но не имеют права выставлять на конкурс игры, уже написанные ими для Колибри до публикации этого конкурса.
  • «Откуда златишко?» — «Из леса, вестимо. Отец, слышишь, грабит, а я отвожу» Это деньги, полученные нами от Гугла за наставничество четырёх студентов в Google Summer of Code 2014. Об этом я тоже скоро когда-нибудь напишу статью.
  • NEW: «Ресурсы» для игры (картинки, спрайты, звуки, музыку, если таковые имеются) можно использовать чужие, при условии, что они также распространяются под одной из утверждённых open-source лицензий.
  • NEW: Каждый участник может послать на конкурс до трёх (3) игр, написанных им (новых либо портированных), и соответственно получить до трёх (3) призов.

Ответы будут дополняться по мере поступления вопросов.
Автор: @yogev_ezra
KolibriOS Project Team
рейтинг 89,90
Быстрая операционная система для бизнеса и хобби
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Комментарии (75)

  • +1
    Интересно, может даже по участвую. Даже есть своя игра, так и не дописанная, а тут такой повод хммм.
    • 0
      Я вот тоже сначала соблазнился…
      Но свой фреймворк на котором делаю все проекты — не имею права выкладывать в Open Source…
      Эх, печаль… Хоть с нуля пиши всё…
      • +1
        Я вообще под webgl/three.js пишу, ваши бы проблемы мне :(
  • +1
    Прекрасно. Только два (с половиной) вопроса:
    1. Для каких языков уже существует компилятор под KolibriOS?
    2. Возможно ли подать на конкурс больше одной игры?
    2а. А если одна будет портом уже существующей, а вторая — оригиналом?
    • 0
      1. Можно использовать C, Pascal и ассемблер. Ещё есть интерпретаторы TinyPy и Lua
      • 0
        На колибри работают 3D-рендеры? Или игрушку только плоскую?
        • 0
          Есть порт MESA, который умеет в software render, и вроде даже с AMD/Intel работать умеет.
        • +1
          Есть TinyGL, подмножество OpenGL с программным рендерингом. Если его хватит, можно использовать.
      • 0
        А Lazarus или его аналог на Колибри есть?
        • 0
          Нет, нету.
    • 0
      Извините за задержку с ответом — нужно было подумать насчёт пункта №2.
      1. Для каких языков уже существует компилятор под KolibriOS?
      В нашем проекте много компиляторов различной степени готовности — вот здесь находится далеко не полный их список. Проблема возникнет на этапе добавления игры в авто-сборку из исходников — на сегодняшний день, авто-сборка поддерживает только эти языки: FASM, NASM, Sphinx C--, GCC/G++, MSVC. Если Вы захотите использовать другой язык, то Вам придётся сначала обсудить с CleverMouse возможность поддержки этого языка авто-сборкой.
      2. Возможно ли подать на конкурс больше одной игры?
      2а. А если одна будет портом уже существующей, а вторая — оригиналом?
      С одной стороны, ограничивать каждого участника только одной игрой невыгодно нам же самим (больше игр на конкурсе -> больше игр в Колибри). С другой стороны, вообще без ограничений мы рискуем быть завалены горой «мусора» от одного участника (который вместо 1-2 хороших игр, решит сделать 45 плохих — по одной за каждый день до окончания конкурса). Поэтому нужно где-то провести границы. Думаю, что 3 игры на участника — это разумный лимит (призов тоже 3). Добавил в правила новый пункт:
      Каждый участник может послать на конкурс до трёх (3) игр, написанных им (новых либо портированных).
      • +1
        Каждый участник может послать на конкурс до трёх (3) игр, написанных им (новых либо портированных).

        Думаю, нужно уточнить, что может ли человек получить более одного приза.
        • 0
          Да, может, то трёх призов соответственно. Обновил условия.
  • –11
    «включая все «ресурсы» — картинки, спрайты, звуки, музыку, если таковые имеются» — извините, до свидания.
    • +9
      Вы не совсем точно поняли посыл. Игра может быть и вообще без «ресурсов» (см. виртуальный собеседник Eliza), но мы не хотим, чтобы Вы «напиратили» музыки из «Утомлённых солнцем», а потом Михалков нас бы прижал.
      • 0
        Для облегчения задачи, добавил в правила новый пункт:
        «Ресурсы» для игры (картинки, спрайты, звуки, музыку, если таковые имеются) можно использовать чужие, при условии, что они также распространяются под одной из утверждённых open-source лицензий.
        • +2
          нельзя портировать игру, написанную кем-то другим

          В том числе, нельзя портировать OpenSource игры? При условии ненарушения прав…
          • 0
            Было решено этого не разрешать, иначе есть немаленький шанс, что работа по портированию будет сделана не руками самого участника, а руками невольных помощников. Свои собственные игры можете портировать на здоровье.
        • 0
          А как насчет CC и Public Domain для ресурсов? Там есть отсылки в FAQ'e, но конкретно этого конкурса?
          К примеру, у меня есть свои поделки, но поскольку художник я от слово «худо», то беру то, что можно брать — древние как кость мамонта произведения (точнее их фотографии или скан-копии) или с wikipedia ресурсы, где лицензия позволяет)
          • 0
            Если лицензия позволяет некоммерческое использование, то можно и для этого конкурса.
  • 0
    кстати, а чего mail.ru молчит про тот розыгрыш? или то и был розыгрыш?
  • +1
    Можно написать 2048. Игра простая, так что можно писать на АСМе.
    • +1
      Хорошая идея! У нас как раз такой игры ещё нет :-)
  • 0
    <юмор-mode>А что, Unity3d под Kolibri ещё не портировали?</юмор-mode>

    Какие вообще более-менее популярные игровые движки есть? Например, RenPy нет и не предвидится из-за отсутствия питона(((
    • +1
      <юмор-mode>А что, Unity3d под Kolibri ещё не портировали?</юмор-mode>
      С помощью Unity3d игру любой может написать — а Вы попробуйте сделать игру без неё. Ну или портируйте Unity3d сами — тогда пожалуйста :-)
      Какие вообще более-менее популярные игровые движки есть? Например, RenPy нет и не предвидится из-за отсутствия питона(((
      У нас больше всё самописное. Единственный игровой движок — tengine, написанный pascualle и им же портированный под Колибри. tengine пока не в авто-сборке, но можно попросить помощи у pascualle, и написать игру под него. Есть ещё ScummVM, но это движок для запуска существующих игр, а не для разработки новых.
  • 0
    python полностью портирован? какая версия?
    можно ли использовать дополнительные библиотеки, например pygame?
    • +1
      Выше писали, что есть только TinyPy. А это далеко не полный Python… Но с pygame там вроде даже можно что-то получить. Например, вот.
  • +1
    Какая на данный момент последняя поддерживаемая версия SDL? Кроме непосредственно самой SDL, портирован ли «обвес» типа SDL_ttf, SDL_mixer и т.п.? Если нет, то какие из кроссплатформенных Си-библиотек поддерживаются для вывода звука? Есть ли уже готовые примеры подключения SDL в системе автосборки?
    • +2
      SDL 1.2.2, на следующие версии никто не смотрел. SDL_ttf требует FreeType, которого нет. Звук в SDL есть. Файл конфигурации сборки SDL-версии Quake, со звуком: contrib/other/sdlquake-1.0.9/Tupfile.lua.
      • 0
        SDL_image? Поддерживает PNG с прозрачностями? Про звук — хотелось бы выводить OGG. Стандартными средствами SDL это вроде не умеет, именно поэтому спросил про SDL_mixer.
        • +2
          Из того, что оказалось под рукой в репозитории, SDL_image отказался собираться с libpng из-за того, что последняя с какого-то момента перестала выставлять на всеобщее обозрение в png.h внутренности своих структур, а первая до какого-то момента эти внутренности использовала. Я думаю, что это решается обновлением версии, но этим кто-то должен заниматься.
          С прозрачностью не должно быть проблем, внутри SDL собственный рендерер, умеющий прозрачность.

          SDL_mixer под рукой нет. Если там нет каких-то хитрых зависимостей — не должно быть и проблем. Если есть — вы рискуете получить игрушку размером больше img-образа системы.
      • 0
        freetype вообще-то есть, используется для сборки mupdf и браузера.
  • 0
    можно использовать любой язык программирования —… хоть JAVA ...

    А есть виртуальная Java-машина под KolibriOS?
    • 0
      Была попытка портирования старой JVM от нашего любителя портирования — не знаю, насколько удачная.
      • +1
        Ну, у меня получилось запустить класс. Но я не умею в java, так что дальше jvm дело не пошло. Хотел поддержку MIDP 2.0 добавить, но не осилил.
        • 0
          oss.readytalk.com/avian/ — a эта штука чем хуже?
          • 0
            Ну, она на C++, а на момент портирования jvm не было способа собирать программы на «плюсах».
  • 0
    GCC? Он уже нормально работает там?
    • 0
      По-прежнему только кросс-компиляция.
      • +1
        Я не к этому, а к тому, что раньше единственной инструкции был пост на форуме. Сейчас таки прошел по ссылке, как минимум с документацией стало лучше :)
        • +2
          Стало больше постов на форуме, да. Вообще уже много лет есть инструкция «HLL in Kolibri», и даже недавно появилась статья на Хабре.
          Вот она: habrahabr.ru/company/kolibrios/blog/229231/
  • 0
    Нельзя портировать чужую игру. Но вопрос насколько разрешены римейки? Хорошо бы очертить границы.
    • 0
      Римейк можно, если код римейка написан Вами.
  • 0
    За 3 часа так и не разобрался, как скомпилировать g++ HelloWorld (под linux). Хорошего (простого для начала работы) SDK явно не хватает. Кажется это хорошая тема для GSoC 2015.
    • 0
      Вот выдержка из build.txt на сервере:
      For a GCC program, get the toolchain at ftp.kolibrios.org/users/Serge/new/Toolchain/.

      Under Windows, you need the package with «msys» in name and MinGW;
      after installing MinGW, unpack the package to
      \MinGW\msys\1.0\home\autobuild\tools\win32, the package assumes
      exactly this path. Run MinGW shell.

      Under Linux, you need the package with «linux» in name
      and runtime library cloog; e.g. for Debian-based distributives
      use apt-get install libcloog-isl4. Unpack the package to
      /home/autobuild/tools/win32, the package assumes exactly this path.

      In both MinGW and Linux, make sure that the command
      /home/autobuild/tools/win32/bin/kos32-gcc
      invokes the compiler.

      If the program uses libraries, you will also need to either compile
      them separately or download SDK, if they are included to SDK.
      Compiling is ultimately a sequence of calls to kos32-gcc and kos32-ld,
      but filling exact parameters can be tricky, so maybe you want to
      use Tup — proceed to Q2/A2 — or Make, if a maintainer has provided Makefile.

      Вот частичный перевод на русский: bitbucket.org/pascualle/tengine/raw/099dbc8dd7c33ea34cb230fa0289cca4e72e4c86/samples/scroll_map/_kolibrios/readme.txt
      Если ещё есть вопросы, нужно пинать автора на нашем форуме (можно в этой теме).
    • +1
      Хорошего SDK действительно не хватает, но для GSoC 2015 это плохая тема — студенты не справятся.
    • 0
      Тоже возился: hello world собрался, но запускаться на живой системе ни в какую не хочет. Что самое странное: накачал на форуме бинарников для системы и они тоже не запускаются. Какая-то очень странная фигня.
      • 0
        Это очень-очень странно. Какую конкретно версию Колибри Вы скачали, и какие программы с форума (хотя бы одну ссылку)?
        • 0
          Качал вот этот билд: builds.kolibrios.org/rus/latest-iso.7z

          Чужая программа: вот, например

          Мой собранный helloworld: link
          • 0
            1) Билд абсолютно правильный.
            2) Попробуйте до запуска программы открыть доску отладки (board), и посмотреть, пишется ли на доску какое-то сообщение после запуска программы (проверьте в обеих вкладках — kernel & user).
            • 0
              Ничего.

              KFM, кстати, при запуске пишет «File system error 0000000031»
              • 0
                Откуда Вы запускаете Колибри? На реальной машине, или в эмуляторе? Если на реальной машине, то сообщите точную марку процессора и количество оперативной памяти. Если в эмуляторе, то название эмулятора и точную версию, а также количество оперативной памяти, которое Вы выделили.

                latest-iso, который Вы скачали, Вы монтируете как виртуальный CD-ROM, или записали на реальный CD-ROM, или на флешку, или куда-то ещё? И куда Вы клали чужую программу и Вашу, и какая там файловая система?
                • 0
                  #!/bin/bash
                  
                  qemu-system-x86_64 -cdrom kolibri.iso -hda disk-with-prog.fat32.img -boot order=d
                  
                • 0
                  Оу, открыл бинарь во встроенном HEX-редакторе, а там нули. Получается, проблема в FAT-драйвере или еще чем-то
                • 0
                  Возможно, ему не понравился размер диска в 4Мб. Изменил его на больший: попробовал и 100Мб, и 1Гб. Имею теперь другую проблему: не вижу скопированных туда файлов в kolibri :)
                  • 0
                    Скорее всего, это баг QEMU с FAT, уже нам известный. Какая у Вас версия QEMU?
                    • 0
                      qemu-2.1.2
                    • 0
                      Нет. Тот баг касается случая, когда qemu сам создаёт образ на основе папки по -hda fat:..., и делает это неправильно.
                • 0
                  Сделал вместо -hda image эмуляцию USB-флешки. Заработало. Спасибо за помощь.

                  Осталось теперь разобраться, как libimg подключить из RTL.
        • 0
          А вот KFar мне пишет «Файл не является исполняемым». В колибри ведь нет бита исполнения?
          • 0
            Бита исполнения нет, верно. Есть сигнатура «MENUET01» внутри файла, и ещё кое-что: board.kolibrios.org/viewtopic.php?f=23&t=2776&p=58293#p58293
            • 0
              Сигнатура внутри файла у меня, есть. Собирал я при помощи gcc с RTL.
  • 0
    Подскажите пожалуйста, как соотносятся Tupfile.lua файлы в репозитории Колибри
    и Tupfile'ы, о которых я читаю на gittup.org:
    Из Tupfile как то должен получиться Tupfile.lua?
    • +1
      gittup.org/tup/lua_parser.html
      Tup позволяет задавать правила сборки двумя способами: на своём собственном DSL — синтаксис которого использует большая часть мануала — и на Lua. Lua, будучи полноценным языком программирования, позволяет больше.

      Вы взяли в качестве примера файл, который делает магию под капотом, в функциях compile_msvc и link_msvc из programs/use_msvc.lua. К сожалению, сейчас, чтобы получить Колибри-бинарник от gcc или msvc, нужно делать довольно много магических пассов, специфических для компилятора — Tup позволяет затолкать их под капот в use_gcc.lua/use_msvc.lua, но не избавиться от них.

      Если вы хотите понять принципы, я советую начать с более простых fasm или nasm: например, programs/network/ftpc/Tupfile.lua, programs/develop/examples/thread/trunk/Tupfile.lua. Тема на форуме с некоторыми комментариями: board.kolibrios.org/viewtopic.php?f=7&t=2869 — там уклон на сравнение со старой системой автосборки на Make, но и просто информация есть.
  • 0
    Призы будут выплачены во 2 квартале 2016 года.
    • 0
      Хорошо хоть «будут выплачены», а не «Good scam.»

      На самом деле, просто перевести деньги за выигрыш гораздо легче, чем пинать студента, который посередине работы вдруг пропал на месяц, и неизвестно, закончит ли он работу вообще. Затем вручную проконтролировать качество 100 флешек (2 раза, так как первая партия оказалась бракованной), совмещая это между работой и семьёй. А когда все флешки проверены, на них записана Колибри, они протестированы на нескольких разных компьютерах, на них наклеены стикеры с результатами тестов, они запечатаны в конверты и на конвертах наклеены адреса получателей, внезапно оказывается, что в тебя летят ракеты Хамаса, и часть почтовых отделений Израиля вообще закрыта из-за этого на 2 месяца. А когда перемирие с Хамасом наконец подписано, служащие почты начинают забастовку, и почтовые отделения опять закрыты.

      И тем не менее, всё это уже позади, и почти все бекеры, выбравшие только флешку в качестве вознаграждения на Кикстартере, и указавшие правильный адрес в опросе, уже получили её (могу выслать Excel с данными, если хотите). 3 флешки вернулись из-за неправильного адреса, ещё 3 флешки оказались потеряны (видимо, почтой Израиля). С этими 6 бекерами я свяжусь индивидуально и договорюсь о способе решения проблемы (повторная пересылка либо возврат денег).

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

      Я сам пожертвовал деньги 9 проектам, из них у 5 уже прошёл обещанный срок доставки наград. Из этих 5 проектов, только 1 доставил награды вовремя (снимаю шляпу), ещё 2 доставили с опозданием где-то на год (как в случае с нашим Кикстартером), 1 просто скрылся с деньгами (кстати, наш соотечественник), и последний потратил деньги, но проект завалил (но хоть признался об этом позавчера). Если руководствоваться Вашей логикой, что все проекты на Кикстартере всегда вовремя вышлют награды, то вынужден Вас разочаровать — таких меньшинство.

      Я не пытаюсь оправдываться, просто почувствовал нужным объяснить ситуацию.
  • 0
    И ещё очень хотелось бы примеры многопоточности и проигрывания WAV. На Си… Нативными средствами Колибри.
    • +2
      API звуковой подсистемы: programs/develop/sdk/trunk/sound/include/sound.h. За исключением test_wav, все функции оттуда — вызовы драйвера, так что нативнее некуда.
      Пример использования, с многопоточностью: programs/media/ac97snd/ac97snd/ac97wav.c.
      • 0
        Не подскажете, может уже есть и PortAudio? Audacity в качестве звукового бэкэнда использует именно его, насколько я в курсе.
        • +1
          Нет. Конечно, никто не мешает вам попробовать портировать его самостоятельно.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разработка