Gaminator 9 :: Frost :: Завершение
анонс разработка интерфейс первые локации релиз
Ну вот и финальная версия… Игра получилась конечно небольшая, но я реализовал все основные идеи, которые хотел воплотить. Под катом некоторые подробности разработки и дополнительные скриншоты.
Начало игры
Управление:
- WASD — передвижение роюота
- Мышь — направление выстрела
- ЛКМ — удар сфокусированной энергией
- ПКМ — выстрел лазером
Скачать версию 1.0 [12.00 MB]
Собственно говоря желание делать игры возникло не внезапно: я издавна любил ковыряться в ресурсах игр, пытаться моддить их, делать к ним карты. Serious Sam, Unreal Tournament 2004, Soldat, Morrowind, CS2D, Battleships Forever, Quake 4, Oblivion, Subvein и множество других. Но рано или поздно все упиралось в ограничения игрового редактора или движка.
Исследование первой локации
До конкурса множество раз пытался делать игры, но каждый раз бросал это дело. Начинал что-либо делать в GM на кнопках, копипастил готовый код, находил где-либо графику и пытался заставить все это работать вместе… Ничего как правило не работало и я бросал все на 3−4 день. После этого я решил для себя что GM ужасен и сделать в нем что-либо вообще невозможно. Потом искал легкие движки и даже как-то скачал love2d, но его я тем более не смог осилить.
Большое количество поломанных роботов намекает на опасность
И вот увидел анонс Gamintor’а и записался. Для себя решил что если и в этот раз ничего не смогу сделать то удостоверюсь что это просто не мое.
Выход на поверхность
Вот прошли первые 4 дня, я включил Notepad++, открыл wiki по love2d и начал пытаться что-то сделать… Разумеется сам написать ничего не смог, а код из примеров на 200−300 строк приводил в ужас.
Финал уже близко
На 5 день я уже хотел было сняться, но все же решил подождать, и не питая особых надежд скачал GM и начал разрабатывать. Осознание того что все в общем то решаемо пришло где-то на 15 день (хотя уверенности что успею в срок не было до конца: D). Ниже можно скачать старые версии, и проследить по ним развитие игры.
Очень сильный сюжетный спойлер, так что лучше не всматривайтесь в скриншот: D
Старые версии игры:
Итак, что я обещал в предвыборной программе первом посте:
- Ниже нуля — игра происходит в условиях очередного ледникового периода и доставшейся от уже мертвого человечества ядерной зимы. — Ну это вроде передать удалось.
- Выживание — в разрушенном мире количество энергии очень ограниченно, поэтому игроку часто будет предоставляться выбор: уничтожить нейтральных роботов и поглощать их энергию или же идти мирным путем. — Нет.
- Добро или зло — от того куда склонился игрок будет зависеть концовка игры. Также постепенно будет изменяться и внешний вид самого робота. — Нет.
Ну хотя бы одно из трех реализовал: D
Bonus: Предоставляю архив со всеми наработками. Врят ли они кому либо пригодятся, разве что графика…
Ресурсы игры [16.00 MB]
- 10 марта 2012, 01:20
- 08
Мне нравится. Но чего-то не хватает.
Читать записи робота было очень интересно, и, мне кажется, здорово добавило атмосфере и погружению в игру. С удовольствием читал. Понравилось, как он перераспределил задачи, когда понял, что слишком сильные повреждения и сам он не справится. И еще понравилось, что он почти расстроился, что другие роботы настроены враждебно. Вообще, было приятно играть за такого персонажа.
Левел ап слишком медленный. Не должен он быть медленным. Я был практически благодарен двум здоровякам, что завалили меня лазерами. Потому что пройти дальше хотелось, но играть уже было скучновато. Вот если бы я уже стрелял хотя бы подальше, или бегал побыстрее. Пауэр апов не хватает. Почаще и поразнообразнее. Мне кажется, атмосфере они не повредят, но дольше удержат игрока у экрана.
Жаль, что ты не победил дрожание стен. И хорошо, что убыстрил вроде бы гг. Но нужно еще поднажать в геймплее.
Мне понравилось, если она тебе не осточертела за время конкурса, то было бы здорово, если бы ты продолжил над ней работать.
Да, и самое главное. Это игра. Поздравляю.
Возвращаться к разработке пока желания нет. Пока что в планах изучить методы генерации и сделать простенький платформер или разобраться с различными эффектами и частицами и сделать небольшие гонки.
Ну а так мне понравилось работать в режиме 3 недели - релиз. Это вынуждает решать проблемы максимально быстро и эффективно, так же хорошо поддерживает мотивацию.
То есть, Frost - это твой первый серьезный проект? Если да, то очень достойное у тебя начало. Отличная атмосфера.
Плохо только, что чекпоинты не смог реализовать. Я вышел на улицу и меня почти сразу убил большой робот. Во второй раз меня в той же равнине отчаяния убили. Желание проходить все сначала сразу отпадает. Сюжет интересный, если найду время, поробую доиграть.
Да ладно, love не такой уж сложный. Я порой что-нибудь на нём пишу. Вроде немного, самые основы. Смотрю, а уже 120 строк набралось.
Ну я просто до этого никогда не сталкивался с кодом и меня сильно пугала подобная стена текста:
function love.load()
sprite = love.graphics.newImage "sprite.png"
quads = {
down = {
Quad( 0, 0, 32, 48, 128, 192);
Quad(32, 0, 32, 48, 128, 192);
Quad(64, 0, 32, 48, 128, 192);
Quad(96, 0, 32, 48, 128, 192);
};
left = {
Quad( 0, 48, 32, 48, 128, 192);
Quad(32, 48, 32, 48, 128, 192);
Quad(64, 48, 32, 48, 128, 192);
Quad(96, 48, 32, 48, 128, 192);
};
right = {
Quad( 0, 96, 32, 48, 128, 192);
Quad(32, 96, 32, 48, 128, 192);
Quad(64, 96, 32, 48, 128, 192);
Quad(96, 96, 32, 48, 128, 192);
};
up = {
Quad( 0, 144, 32, 48, 128, 192);
Quad(32, 144, 32, 48, 128, 192);
Quad(64, 144, 32, 48, 128, 192);
Quad(96, 144, 32, 48, 128, 192);
};
}
iterator = 1
max = 4
timer = 0
moving = false
direction = "down"
end
function love.update(dt)
if moving then
timer = timer + dt
if timer > 0.2 then
timer = 0
iterator = iterator + 1
if iterator > max then
iterator = 1
end
end
end
end
function love.draw()
love.graphics.drawq(sprite, quads[direction][iterator], 5, 5)
end
function love.keypressed(key)
if quads[key] then -- this is really ugly. Don't do it like this in your final game.
moving = true
direction = key
end
end
function love.keyreleased(key)
if quads[key] and direction == key then -- only stop moving if we're still moving in only that direction.
moving = false
direction = "down"
iterator = 1
end
end
Сейчас когда я уже начал писать свой и разбираться чужом все выглядит не так уж и страшно. Вот кстати мой код движения:
motion_set(direction, 0)
image_index = 0
}
if keyboard_check(ord("A")) {
sprite_index = spr_player_dir_left
image_speed = speed_of_walking_animation
motion_set(180, move_speed)
}
if keyboard_check(ord("D")) {
sprite_index = spr_player_dir_right
image_speed = speed_of_walking_animation
motion_set(0, move_speed)
}
if keyboard_check(ord("W")) {
sprite_index = spr_player_dir_up
image_speed = speed_of_walking_animation
motion_set(90, move_speed)
}
if keyboard_check(ord("S")) {
sprite_index = spr_player_dir_down
image_speed = speed_of_walking_animation
motion_set(270, move_speed)
}
if keyboard_check(ord("A")) && keyboard_check(ord("W")) {
image_speed = speed_of_walking_animation
motion_set(135, move_speed)
}
if keyboard_check(ord("A")) && keyboard_check(ord("S")) {
image_speed = speed_of_walking_animation
motion_set(225, move_speed)
}
if keyboard_check(ord("D")) && keyboard_check(ord("S")) {
image_speed = speed_of_walking_animation
motion_set(315, move_speed)
}
if keyboard_check(ord("D")) && keyboard_check(ord("W")) {
image_speed = speed_of_walking_animation
motion_set(45, move_speed)
}
Согласен очень много лишнего, и довольно глупо было делать множество спрайтов, когда можно было обойтись одним мултистраничным файлом или же вырисовывать только часть аналогом функции из love, как в примере выше.
Да, можно было бы написать короче.
очень уж затянуто начало =( , в общем и целом хорошая задумка , не плохое исполнение.
Я баг нашел: меня роботы в углу зажали и я перешел за уровень, т.е. ходил по черной стороне.
Ух, тяжковато прорываться мимо злых железяк, разве что издалеко поснайперить длиннобластером.. Таящиеся ловят, когда пытаешься рядом с ними зарядов набрать, да зажимают в углу.. Как жеж выбраться таки...
Понравилось:
1. Очень аккуратненько всё отрисовано, стильно.
2. Хорошо подобранная красивая музыка. Вместе с графикой создаёт отличную атмосферу!
3. Тема конкурса раскрыта.
Не понравилось:
1. При упоре в препятствие дёргает экран.
2. Бои суетные, основная тактика "отползай и стреляй" (кроме больших), однообразно.
3. Главного героя и обломки роботов размывает, хотя сам уровень чёткий
4. Отсутствие readme.txt и обучения в игре. Я так ни разу лазером и не стрельнул, только потом в посте прочёл, что правая кнопка тоже действует.
Вышел на третьем уровне за экран и игра закончилась. :)
В целом приятная штучка получилась - цельная, стильная, атмосферная.
Прекрасная работа!
После смерти и 2-го нажатия "Новая игра", новая игра не начинается. Вместо этого показываются титры.
Пожалуй, именно в этой игре я больше всего сопережевал своему подопечному. Браво!!
В принципе нормально. Но как-то довольно обыденно. Ничего особенного в игре не увидела.
Игра очень понравилась, несмотря на баги ;)