РобоКот

Наконец-то я могу выложить мой проект. Закончен он давным-давно, основная часть сделана за 3 дня, ещё 2 дня я лениво шлифовал, после этого поправил баг-два. Я был участником ивента "Awesome Games". Остальных участников не рассекречу. Они не сделали игры, у каждого были свои причины, ну да ладно. Наконец-то все признали, что я единственный "финалист" и дали добро на выкладывание игры.
Итак, встречайте awesome РобоКота!

1_5179.jpg
Жанр: Игра для программистов
Название игры - отсылка к игре "RoboCode". Почему? У моей игры такой же геймплей, только вместо танков коты.

Игра является ареной для сражений котов. Коты летают на летающих тарелках и оснащены усилителями, так как их оружие - МЯУканье (по моим убеждениям коты не должны убивать друг друга), оно выводит из строя их корабли. Также они могут таранить друг друга. В битве могут принимать участие одновременно до 6ти котов.
А теперь мы подходим к самому интересному - геймплей.
Геймплея, как такого, нету. Игрок просто наблюдает за сражениями котов. Вся суть в том, что коты из ниоткуда не берутся. Каждый кот - это программа на "Lua". Так что игрок должен запрограммировать своего кота и выпустить сражаться с один из четырёх (хотя зачем одним? До 6ти котов же!) заготовленных мною котов. Хотя... скучно всё время сражаться с одними и теми же. Рано или поздно игрок улучшит своего кота настолько, что мои коты будут проигрывать раунд за раундом. Почему бы не выложить этого супер-кота на форум, прямо в эту тему, что бы его скачали другие игроки и пустили сражаться со своим? Можно устраивать дуэли на интерес или... турниры на 6 человек!
Теперь пару слов о программировании:
Как я уже писал, программируются коты на скриптовом ЯП "Lua". Он очень прост в освоении, мне, что бы его освоить, хватило статьи в википедии.
Документация по написанию котов есть в архиве. Также рекомендую изучить 4х написанных мною котов.
При написании котов важно помнить, что весь код, по сути, представляет функцию "Update", то есть весь код вызывается каждый кадр. Функция "Initialize" одновременно является функцией обновления, поэтому не стоит ограничивать её вызов. Так же надо обратить внимание на создание переменных. Не стоит писать "a=1", что бы каждый кадр значение вновь становилось единицой, вместо это надо написать "if not a then a=0 end".
Начинать бои просто. Нужно запустить игру, нажать на "Начать", ввести путь к котам и нажать на "ОК". Последние введённые пути, как и настройки, сохраняются. Сейчас там сохранены пути до 4рёх моих котов, рекомендую посмотреть на их бой.

bot.jpg

В заключение о планах и недоработках:
В планах ввод параметра, задающего количество раундов и параметра, задающего скорость битвы.
В игре есть баги, о которых мне известно, но которые я ещё не пофиксил. В частности:
Если вызвать "Initialize" после любой другой функции, игра вылетит с ошибкой. Если перед вызывать "Initialize" каждый раз менять передаваемые параметры, каждый раз будет создаваться новый кот. Если вызывать несколько функций "Initialize", будет создано несколько котов.
Поэтому функцию "Initialize" надо вызывать в самом начале программы, только один раз и с неизменными параметрами.
Я понимаю, что глобальные переменные - плохо, в будущем они будут заменены на возвращающие аргументы функции. Также я понимаю, что весь код, повторяющийся каждый кадр, тоже плохо. В будущем (или будущей игре) код примет такой вид:

function Start()
begin
--...
end

function Update()
begin
--...
end

И напоследок FAQ, состоящее пока только из одного вопроса:

Я написал кота, правильно ввёл путь, но на поле боя он не появился, что делать?
Допущена ошибка в написании кота, например, нарушена конструкция "if .. then .. else .. end". Проверь код.

СКАЧАТЬ

AfrikaansAlbanianArabicArmenianAzerbaijaniBasqueBelarusianBulgarianCatalanChinese (Simplified)Chinese (Traditional)CroatianCzechDanishDetect languageDutchEnglishEstonianFilipinoFinnishFrenchGalicianGeorgianGermanGreekHaitian CreoleHebrewHindiHungarianIcelandicIndonesianIrishItalianJapaneseKoreanLatinLatvianLithuanianMacedonianMalayMalteseNorwegianPersianPolishPortugueseRomanianRussianSerbianSlovakSlovenianSpanishSwahiliSwedishThaiTurkishUkrainianUrduVietnameseWelshYiddishAfrikaansAlbanianArabicArmenianAzerbaijaniBasqueBelarusianBulgarianCatalanChinese (Simplified)Chinese (Traditional)CroatianCzechDanishDutchEnglishEstonianFilipinoFinnishFrenchGalicianGeorgianGermanGreekHaitian CreoleHebrewHindiHungarianIcelandicIndonesianIrishItalianJapaneseKoreanLatinLatvianLithuanianMacedonianMalayMalteseNorwegianPersianPolishPortugueseRomanianRussianSerbianSlovakSlovenianSpanishSwahiliSwedishThaiTurkishUkrainianUrduVietnameseWelshYiddish
English (auto-detected) » Russian
AfrikaansAlbanianArabicArmenianAzerbaijaniBasqueBelarusianBulgarianCatalanChinese (Simplified)Chinese (Traditional)CroatianCzechDanishDetect languageDutchEnglishEstonianFilipinoFinnishFrenchGalicianGeorgianGermanGreekHaitian CreoleHebrewHindiHungarianIcelandicIndonesianIrishItalianJapaneseKoreanLatinLatvianLithuanianMacedonianMalayMalteseNorwegianPersianPolishPortugueseRomanianRussianSerbianSlovakSlovenianSpanishSwahiliSwedishThaiTurkishUkrainianUrduVietnameseWelshYiddishAfrikaansAlbanianArabicArmenianAzerbaijaniBasqueBelarusianBulgarianCatalanChinese (Simplified)Chinese (Traditional)CroatianCzechDanishDutchEnglishEstonianFilipinoFinnishFrenchGalicianGeorgianGermanGreekHaitian CreoleHebrewHindiHungarianIcelandicIndonesianIrishItalianJapaneseKoreanLatinLatvianLithuanianMacedonianMalayMalteseNorwegianPersianPolishPortugueseRomanianRussianSerbianSlovakSlovenianSpanishSwahiliSwedishThaiTurkishUkrainianUrduVietnameseWelshYiddish
English (auto-detected) » Russian