|
Готовые проекты сообщества boolean Сюда переносятся свободные проекты доведенные до релиза |
18.01.2011, 22:15
|
#1
|
Дэвелопер
Регистрация: 21.11.2009
Адрес: Афула
Сообщений: 1,700
Написано 658 полезных сообщений (для 1,963 пользователей)
|
РобоКот
Наконец-то я могу выложить мой проект. Закончен он давным-давно, основная часть сделана за 3 дня, ещё 2 дня я лениво шлифовал, после этого поправил баг-два. Я был участником ивента "Awesome Games". Остальных участников не рассекречу. Они не сделали игры, у каждого были свои причины, ну да ладно. Наконец-то все признали, что я единственный "финалист" и дали добро на выкладывание игры.
Итак, встречайте awesome РобоКота!
Жанр: Игра для программистов
Название игры - отсылка к игре "RoboCode". Почему? У моей игры такой же геймплей, только вместо танков коты.
Игра является ареной для сражений котов. Коты летают на летающих тарелках и оснащены усилителями, так как их оружие - МЯУканье (по моим убеждениям коты не должны убивать друг друга), оно выводит из строя их корабли. Также они могут таранить друг друга. В битве могут принимать участие одновременно до 6ти котов.
А теперь мы подходим к самому интересному - геймплей.
Геймплея, как такого, нету. Игрок просто наблюдает за сражениями котов. Вся суть в том, что коты из ниоткуда не берутся. Каждый кот - это программа на "Lua". Так что игрок должен запрограммировать своего кота и выпустить сражаться с один из четырёх (хотя зачем одним? До 6ти котов же!) заготовленных мною котов. Хотя... скучно всё время сражаться с одними и теми же. Рано или поздно игрок улучшит своего кота настолько, что мои коты будут проигрывать раунд за раундом. Почему бы не выложить этого супер-кота на форум, прямо в эту тему, что бы его скачали другие игроки и пустили сражаться со своим? Можно устраивать дуэли на интерес или... турниры на 6 человек!
Теперь пару слов о программировании:
Как я уже писал, программируются коты на скриптовом ЯП "Lua". Он очень прост в освоении, мне, что бы его освоить, хватило статьи в википедии.
Документация по написанию котов есть в архиве. Также рекомендую изучить 4х написанных мною котов.
При написании котов важно помнить, что весь код, по сути, представляет функцию "Update", то есть весь код вызывается каждый кадр. Функция "Initialize" одновременно является функцией обновления, поэтому не стоит ограничивать её вызов. Так же надо обратить внимание на создание переменных. Не стоит писать "a=1", что бы каждый кадр значение вновь становилось единицой, вместо это надо написать "if not a then a=0 end".
Начинать бои просто. Нужно запустить игру, нажать на "Начать", ввести путь к котам и нажать на "ОК". Последние введённые пути, как и настройки, сохраняются. Сейчас там сохранены пути до 4рёх моих котов, рекомендую посмотреть на их бой.
В заключение о планах и недоработках:
В планах ввод параметра, задающего количество раундов и параметра, задающего скорость битвы.
В игре есть баги, о которых мне известно, но которые я ещё не пофиксил. В частности:
Если вызвать "Initialize" после любой другой функции, игра вылетит с ошибкой. Если перед вызывать "Initialize" каждый раз менять передаваемые параметры, каждый раз будет создаваться новый кот. Если вызывать несколько функций "Initialize", будет создано несколько котов.
Поэтому функцию "Initialize" надо вызывать в самом начале программы, только один раз и с неизменными параметрами.
Я понимаю, что глобальные переменные - плохо, в будущем они будут заменены на возвращающие значения функции. Также я понимаю, что весь код, повторяющийся каждый кадр, тоже плохо. В будущем (или будущей игре) код примет такой вид:
function Start()
begin
--...
end
function Update()
begin
--...
end
И напоследок FAQ, состоящее пока только из одного вопроса:
Я написал кота, правильно ввёл путь, но на поле боя он не появился, что делать?
Допущена ошибка в написании кота, например, нарушена конструкция "if .. then .. else .. end". Проверь код.
СКАЧАТЬ
__________________
kali surgeon
Последний раз редактировалось baton4ik, 22.01.2011 в 13:22.
|
(Offline)
|
|
Эти 7 пользователя(ей) сказали Спасибо baton4ik за это полезное сообщение:
|
|
18.01.2011, 23:46
|
#2
|
Дэвелопер
Регистрация: 21.11.2009
Адрес: Афула
Сообщений: 1,700
Написано 658 полезных сообщений (для 1,963 пользователей)
|
Ответ: РобоКот
Эх, булочники, до чего же вы инертны. АВТОМАТ, как же так? На тебя я надеялся больше всех, мне почему-то думалось, что именно ты напишешь первого кота, выложишь и призовёшь остальных к битвам!
__________________
kali surgeon
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
19.01.2011, 00:10
|
#3
|
Задрот
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений (для 863 пользователей)
|
Ответ: РобоКот
Ленивые программисты пошли
|
(Offline)
|
|
19.01.2011, 00:12
|
#4
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: РобоКот
Дайте время народу! Тут есть люди которые работают..
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
19.01.2011, 00:30
|
#5
|
Задрот
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений (для 863 пользователей)
|
Ответ: РобоКот
Ох, блин Я что то и не посмотрел дату первого поста Где-то ранее видел, думал, это тоже самое
|
(Offline)
|
|
19.01.2011, 01:02
|
#6
|
Дэвелопер
Регистрация: 21.11.2009
Адрес: Афула
Сообщений: 1,700
Написано 658 полезных сообщений (для 1,963 пользователей)
|
Ответ: РобоКот
Сообщение от MoKa
Дайте время народу! Тут есть люди которые работают..
|
Я в шутку написал. Это шутка про любителей возмущаться по поводу отсутствия ответов через час после размещения вопроса
__________________
kali surgeon
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
19.01.2011, 03:53
|
#7
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: РобоКот
В свое время занимались программированием змей)
Как-то визуальное программирование вставляло больше...
http://ru.wikipedia.org/wiki/Snake_Battle
http://www.ag.ru/screenshots/zmeinyi_boy/38246
PS: плохая привычка архивы называть Release или Debug... лень переименовать?
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
|
|
19.01.2011, 10:06
|
#8
|
Дэвелопер
Регистрация: 21.11.2009
Адрес: Афула
Сообщений: 1,700
Написано 658 полезных сообщений (для 1,963 пользователей)
|
Ответ: РобоКот
Сообщение от pax
|
Вот-вот. Я с этой игрой пошёл на МАН, подав её, как обучающую игру, которая заинтересует школьников. 1е место на районе уже есть.
__________________
kali surgeon
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
19.01.2011, 12:06
|
#9
|
Бывалый
Регистрация: 06.04.2009
Сообщений: 612
Написано 276 полезных сообщений (для 858 пользователей)
|
Ответ: РобоКот
Черт, придется учить lua, и почему так познавательно не делают моорги...
(Чтобы апнуть 50 уровень нужно запрограмить гг на хаскеле)
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
19.01.2011, 14:26
|
#10
|
Знающий
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 112 полезных сообщений (для 166 пользователей)
|
Ответ: РобоКот
Мне нравятся игры типа RoboCode и Colobot, очень жалко что новые появляются редко.
Твой проект сделан хорошо, с радостью протестирую новые версии.
Пока нашел баг в логике: Если все боты погибнут в бою, игра никак на это не реагирует. Запуск нового боя вызовет пустое финальное окошко.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
19.01.2011, 17:57
|
#11
|
Дэвелопер
Регистрация: 21.11.2009
Адрес: Афула
Сообщений: 1,700
Написано 658 полезных сообщений (для 1,963 пользователей)
|
Ответ: РобоКот
Мне казалось, что я это пофиксил. Значит нет. Спасибо.
__________________
kali surgeon
|
(Offline)
|
|
19.01.2011, 21:18
|
#12
|
Дэвелопер
Регистрация: 04.11.2009
Адрес: Украина, Днепропетровск
Сообщений: 1,480
Написано 662 полезных сообщений (для 1,985 пользователей)
|
Ответ: РобоКот
Хотел что-то сделать, но документация - отстой!
Да и багнутые функции немного, я сделал бота который на скорости 15 гонял по всему полю, и он выиграл десяток раз подряд
|
(Offline)
|
|
19.01.2011, 21:31
|
#13
|
Дэвелопер
Регистрация: 21.11.2009
Адрес: Афула
Сообщений: 1,700
Написано 658 полезных сообщений (для 1,963 пользователей)
|
Ответ: РобоКот
Очень информативное сообщение. Написал бы, что тебе не понятно в документации и в чём заключается баг.
__________________
kali surgeon
|
(Offline)
|
|
19.01.2011, 21:44
|
#14
|
Дэвелопер
Регистрация: 04.11.2009
Адрес: Украина, Днепропетровск
Сообщений: 1,480
Написано 662 полезных сообщений (для 1,985 пользователей)
|
Ответ: РобоКот
Мне не нравится что документация не организована, что в ней не описаны функции передвижения(назад так и не научился ездить), функция вывода текста, функция атаки, функция поворота.
SetSpeed принимает в качестве аргумента не только числа <=3, а также и большие(поставь камикадзе боту 15 скорости, и он разнесет все за несколько секунд). Turn(5) и Turn(90) работают одинаково(хотя, возможно, я что-то не понимаю в этой не задокументированной функции)
|
(Offline)
|
|
19.01.2011, 22:09
|
#15
|
Дэвелопер
Регистрация: 21.11.2009
Адрес: Афула
Сообщений: 1,700
Написано 658 полезных сообщений (для 1,963 пользователей)
|
Ответ: РобоКот
Сообщение от Reks888
Мне не нравится что документация не организована, что в ней не описаны функции передвижения(назад так и не научился ездить), функция вывода текста, функция атаки, функция поворота.
SetSpeed принимает в качестве аргумента не только числа <=3, а также и большие(поставь камикадзе боту 15 скорости, и он разнесет все за несколько секунд). Turn(5) и Turn(90) работают одинаково(хотя, возможно, я что-то не понимаю в этой не задокументированной функции)
|
В документации описаны все функции, в том числе и функции передвижения, атаки, вывода текста и поворота. Читай внимательней. Тебе непонятна строчка "MoveForward() - Кот двигается вперёд относительно своего положения"?
Видимо ты очень невнимательный, раз не заметил даже то, что при SetSpeed(2) и SetSpeed(25) скорость кота одинаковая. Да, функция принимает любые значения, однако, if speed>2 speed=2
if speed<1 speed=1
Да, поворотник при Turn(5) и Turn(90) работает одинаково, так как существует ограничение на скорость поворота, а ты что хотел? Что бы кот мог за один кадр повернутся на 90 градусов?
P.S. Только что проверил, насчёт скорости ты прав, что странно. Сейчас проверю и исправлю
__________________
kali surgeon
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:01.
|