РобоКот
Вложений: 4
Наконец-то я могу выложить мой проект. Закончен он давным-давно, основная часть сделана за 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() Я написал кота, правильно ввёл путь, но на поле боя он не появился, что делать? Допущена ошибка в написании кота, например, нарушена конструкция "if .. then .. else .. end". Проверь код. СКАЧАТЬ |
Ответ: РобоКот
Эх, булочники, до чего же вы инертны. АВТОМАТ, как же так? На тебя я надеялся больше всех, мне почему-то думалось, что именно ты напишешь первого кота, выложишь и призовёшь остальных к битвам!
|
Ответ: РобоКот
Ленивые программисты пошли :)
|
Ответ: РобоКот
Дайте время народу! Тут есть люди которые работают..
|
Ответ: РобоКот
Ох, блин :) Я что то и не посмотрел дату первого поста :) Где-то ранее видел, думал, это тоже самое :)
|
Ответ: РобоКот
Цитата:
|
Ответ: РобоКот
В свое время занимались программированием змей)
Как-то визуальное программирование вставляло больше... http://ru.wikipedia.org/wiki/Snake_Battle http://www.ag.ru/screenshots/zmeinyi_boy/38246 PS: плохая привычка архивы называть Release или Debug... лень переименовать? |
Ответ: РобоКот
Цитата:
|
Ответ: РобоКот
Черт, придется учить lua, и почему так познавательно не делают моорги...;)
(Чтобы апнуть 50 уровень нужно запрограмить гг на хаскеле) |
Ответ: РобоКот
Мне нравятся игры типа RoboCode и Colobot, очень жалко что новые появляются редко.
Твой проект сделан хорошо, с радостью протестирую новые версии. Пока нашел баг в логике: Если все боты погибнут в бою, игра никак на это не реагирует. Запуск нового боя вызовет пустое финальное окошко. |
Ответ: РобоКот
Мне казалось, что я это пофиксил. Значит нет. Спасибо.
|
Ответ: РобоКот
Хотел что-то сделать, но документация - отстой!
Да и багнутые функции немного, я сделал бота который на скорости 15 гонял по всему полю, и он выиграл десяток раз подряд |
Ответ: РобоКот
Очень информативное сообщение. Написал бы, что тебе не понятно в документации и в чём заключается баг.
|
Ответ: РобоКот
Мне не нравится что документация не организована, что в ней не описаны функции передвижения(назад так и не научился ездить), функция вывода текста, функция атаки, функция поворота.
SetSpeed принимает в качестве аргумента не только числа <=3, а также и большие(поставь камикадзе боту 15 скорости, и он разнесет все за несколько секунд). Turn(5) и Turn(90) работают одинаково(хотя, возможно, я что-то не понимаю в этой не задокументированной функции) |
Ответ: РобоКот
Цитата:
Видимо ты очень невнимательный, раз не заметил даже то, что при SetSpeed(2) и SetSpeed(25) скорость кота одинаковая. Да, функция принимает любые значения, однако, if speed>2 speed=2 if speed<1 speed=1 Да, поворотник при Turn(5) и Turn(90) работает одинаково, так как существует ограничение на скорость поворота, а ты что хотел? Что бы кот мог за один кадр повернутся на 90 градусов? P.S. Только что проверил, насчёт скорости ты прав, что странно. Сейчас проверю и исправлю |
Ответ: РобоКот
Вложений: 1
Баг вылечен, господа, в аттаче отдельно exeшник. Сейчас перезалью весь архив.
upd: готово, ссылка в первом посту изменена |
Ответ: РобоКот
Цитата:
Нет чтоб хоть названия функций написать. Ну вот как двигаться назад, я так и не понял И какой максимальный угол поворота кота? Нужно вручную выискивать? Видимо ты очень невнимательный, если не заметил что твоя документация не содержит практически никакой полезной информации. Все собирается из кода ботов |
Ответ: РобоКот
У меня нет слов. Ты троллишь, да? Если нет, то ты не умеешь перелистывать страницы в ворде или что у тебя там. Открываю документ, перелистываю на 2ю страницу и, о чудо!, список всех функций с описанием каждой.
Максимальный угол поворота? 360 градусов, разве не очевидно? Или ты про скорость поворота? ;) Тогда выражайся яснее. От 0 до 3х градусов в кадр. |
Ответ: РобоКот
|
Ответ: РобоКот
1. Глянь на полосу прокрутки
2. И сколько ты уже книг/документов не дочитал? В книге, небось, когда глава оканчивается, тоже думаешь, что это конец? P.S. Давай на этом и закончим |
Ответ: РобоКот
Если честно, не вдохновило ручное программирование как я уже писал. К тому же изучать дополнительно LUA лень.
Вот в Snake Battle было интересно - можно запрограммировать действие змеи не зная языка программирования. Возможно стоит написать визуальный редактор, который транслирует содержимое в код LUA? Не интересней будет? |
Ответ: РобоКот
Ну вот, уже без визуальных редакторов не можешь :-D
Что этот Lua изучать? Прочитать статью на википедии и всё. |
Ответ: РобоКот
Не, я люблю обычное программирование, и не знаю, полюблю ли графическое, которое мы реализуем в VIZIO. Но в данный момент переключать мозги на другой язык для того чтобы можно было поиграть в игру - что-то не хочется... к тому же надо искать файлы скриптов, создавать свой вручную... нельзя это дело автоматизировать и открывать редактор скрипта кота прям из игры хотя бы?
|
Ответ: РобоКот
Да, идея хорошая, надо будет сделать, спасибо. Ну а пока так, в принципе, написание кота много времени не занимает.
|
Ответ: РобоКот
|
Ответ: РобоКот
Толсто, это бесплатный офис.
|
Ответ: РобоКот
У меня сеть слетела, жаль не успел добавить раньше:
Переменная Angle должна принимать значения от 0 до 359. Я свободно довел значение до 10000. Команда Turn принимает значения не более 3.Например команда Turn(45) не имеет смысла, мне все равно придется контролировать угол самому. И у меня вопрос: Может стоит использовать вектора для расчета движения? |
Ответ: РобоКот
Да, переменная angle может принять любое значение. Ничего необычного, 360 градусов == 720 градусов.
Про Turn я уже писал: она задаёт скорость поворота. А скорость 45 градусов в кадр - многовато ;) Ответ: Может. |
Ответ: РобоКот
Цитата:
Цитата:
Цитата:
|
Ответ: РобоКот
Да, хорошо бы записать. Насчёт angle не совсем понял, где просчитывать? Прямо в скрипте? Не вижу проблемы, изначально кот повернут направо относительно тебя, для него это 0 градусов.
|
Ответ: РобоКот
Согласен, проблем нет, но придется сделать дополнительную переменную для угла поворота, посчитать угол, а это дополнительная нагрузка.
Или я что-то не понимаю, и расчеты сделанные на скрипте выполняются с той-же скоростью что и код самой программы? |
Ответ: РобоКот
Если я правильно тебя понял, то да. Действует интерпретатор.
|
Ответ: РобоКот
Нашел серьезный баг в логике:
Ставим SetSpeed(1), далее пишем MoveForward() десять раз подряд и получаем скорость около 10 единиц, без ущерба от стен. Это касается и других команд (Turn(3) десять раз подряд повернет персонаж на 30 ед. за раз) Команды Turn,MoveForward() и др. должны просто выставлять флаги, а уже потом на основе флагов выполняем движение. |
Ответ: РобоКот
Вложений: 1
Большое спасибо. Баг исправлен. В аттаче exeшник, перезаливаю архив, сейчас заменю ссылку в 1вом посту.
P.S. По вопросам и небольшим багам лучше пиши в аську или скайп |
Ответ: РобоКот
Выше описан не баг а хак :)
|
Ответ: РобоКот
Господа, как насчёт небольшого турнира?
|
Ответ: РобоКот
если все выложат своих ботов, то будет:
1)бот от батончика конец списка |
Ответ: РобоКот
Твои подколки, как всегда, не в тему.
Хочешь сказать, что никто из булочников не совладает с написанием своего кота? Или хочешь сказать, что моя игра так убога, что все побрезгуют? В любом случае, ты, как всегда, стараешься задеть меня своими исполненными злобой сообщениями, жаль. |
Ответ: РобоКот
Дык. Давай лучше не турнир устраивай, а пиши визуальный редактор кода прямо в игре (как в Unity - написал - запустил - остановил - отредактировл :)). И опять же прямо в игре реализуй ту статейку с Википедии. Так будет полезней, мало кто из булочников полезет туда чтоб изучайт этот язык :)
Тогда я тоже присоединюсь :) |
Ответ: РобоКот
Попробую что-нить натворить, когда появится свободное время.
|
Ответ: РобоКот
Цитата:
Так, для МАНа я выбрал тему "Улучшение уроков информатики посредством обучающих игр" и с разрешения моей учительницы провёл в своём классе урок информатики. Я рассказал им об игре и научил делать котов. Я, разумеется, не ожидал, что у них получится, и 2 законченных кота у 2х девушек меня порадовали. Они даже посражались и им, в принципе, понравилось, не смотря на то, что программирование в принципе их не тянуло никогда (что моя работа и призвана была доказать - моя игра мотивирует учеников изучать программирование) |
Ответ: РобоКот
Ну да, весьма необычно. Вместо очередного рейда по пэйнту школоте предложили сыграть в игру. Я б сам не отказался :)
|
Ответ: РобоКот
Ок, если дойдут руки, займусь редактором. Но, в любом случае, это будет нескоро. А пока можно пользоваться готовыми иде
|
Ответ: РобоКот
|
Ответ: РобоКот
Цитата:
|
Ответ: РобоКот
На колобот бы в наших школах всех подсадить
|
Ответ: РобоКот
Спасибо батону за эту игру
Если бы не она, то я бы не вспомнил про колобот. Вот теперь играю |
Ответ: РобоКот
Что ж, на городе МАН удачно защитил. Моя работа была среди лучших. А были и вовсе смешные примеры:
На районе один парень вообще демонстрировал свой сайт сервера CS1.6 |
Ответ: РобоКот
Будущие изобретатели принципиально новых ОС. :-)
|
Ответ: РобоКот
Раз уж заговорили про МАН.
Долго не мог определиться с темой, думал что все меня обгонят. Сейчас как увидел, что у нас презентуют: Детские обучающие игры в Turbo Pascal(текстовые чтоле) Нахождение серединной медианы(упорядочил массив и взял элемент посередине) Нахождение сторон треугольника через синусы углов И прочие задачки по математике 5-9 класс Иногда встречаются достойные работы, но не больше чем три за год. С такими работами можно было бы FAP презентовать на 1-2-3 место. |
Ответ: РобоКот
Там и жюри ещё то. Один парень принёс какую-то разработку на php, но показать не вышло. Он стал им объяснять: "Мне нужен апач, у вас его нету". На это они сделали большие глаза и заявили: "Какой апач, что ты нам про свой пиратский софт втираешь?". Парень выпал в осадок.
|
Ответ: РобоКот
|
Ответ: РобоКот
деньги
|
Ответ: РобоКот
Ну, не всё так плохо, на районе жюри было вроде неплохое. К тому же лично мне было интересно показать свою разработку и посмотреть на проекты других. Два парня показывали игры на блитц3д. У первого это была 2д-аркада, у второго 3д-шутер. Оба сказали, что они показывают это в секции обучающих игр и программ, так как дети, увидев эти игры, захотят писать свои (притянуто за уши, да). С обоими я пообщался, первому посоветовал blitzmax и высказал своё удивление по поводу названия его константы (он открывал код. Вот название: "TIMEBETWEENENEMYBULLETS"). Второму помог с его проблемой - прицел не поспевал игроком (очевидно, что он ставит прицел в координаты мыши, а мышь центрирует, вместо того, чтобы просто поставить прицел в центр). Да и кроме этого было несколько интересных работ.
Ах да, один парень показал свою реферативную работу. Он (внимание) провёл опрос среди пользователей системы "steam" и выяснил, что 80% молодёжи играют в игры. Затем шли опросы по времени игры, предпочтениям и проч. В выводах говорилось, что среднее время - 2-3 часа, это определённо зависимость и игры оказывают колоссальное негативное влияние. На вопрос о источнике выводов он ответить не смог (в его работе не рассматривались как позитивное, так и негативное влияние). |
Ответ: РобоКот
|
Ответ: РобоКот
Цитата:
|
Ответ: РобоКот
Увы, не успел. Однако я дал ссылку одному парню на районе, его тоже геймдев интересовал. Показывал флеш-игру.
|
Ответ: РобоКот
Цитата:
Где-то читал, что во времена Гражданской войны среди населения можно было встретить фразы типа "Вчерась плохие большевики хороших коммунистов из села Миндюкино выбили" И это, мать вашу, такие люди работают учителями информатики в школах! Всё равно, что неграмотный будет учить кого-то читать и писать. Цитата:
|
Ответ: РобоКот
А чо в РобаКот нельзя свои варки создавать?????И почему так мало функций...?
|
Ответ: РобоКот
Стоит посмотреть.
|
Ответ: РобоКот
Цитата:
Код:
if not SomeVariable then SomeVariable=0 end Код:
SomeVariable=SuperUniVariable |
Ответ: РобоКот
Цитата:
поддержкой обоих регистров букв(а то если написал MEOW() kak meow() не работает) БАГИ:: когда несколько мрут,нет победителя(уже говорили)..поставь счётчик ударов на каждого..а потом и выбирай победителя (из тех кто помер вместе) по нему. бывает баг, когда рандомный генератор ставит котов друг на друга...быстро мрут..так, как считается коллизия.. А какие ещё можно функции LUA использовать.. |
Ответ: РобоКот
Регистр не трогать! Это наоборот плюс в языках, если есть чувствительность к регистру.
Дебаггер кода? Вы хоть понимаете технические аспекты? (хз если нет такой вьючеры в самом модуле lua, не думаю что это будет простая идея). |
Ответ: РобоКот
Цитата:
Цитата:
|
Часовой пояс GMT +4, время: 15:45. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot