Skip to content

Xyzzyall/Starbattle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Спустя несколько эпох, величественный xyzzyall все-таки довел ЭТО до нижней границы совершенства!

Сюжет:
А.С. Пушкин, бороздя бесконечные просторы дальнего космоса, натыкается на космическую станцию. Пристыковавшись, он зашел на борт и повернул в сторону космокафе.
-- "Большой космолатте, пожалуйста"
-- "Вам сиропа со вкусом темной материи добавить?"
-- "Нет, спасибо"
Взяв свой кофе, Александр проследовал до удобного стола у окна станции.
-- "Как же хорошо!" -- подумал он
Погрузившись в свои мечты, Пушкин и не заметил, как со спины к нему тихо подкрался Дантес. 
-- "Ах, вот ты где, Саня-Зассаня! Очкуешь меня?! Помнишь, 500 лет назад я вызвал тебя на дуель! И где ты сейчас?? Не боишься потерять свою честь?" -- смазливо выговорил Дантес.
-- "Дантес! Я вызываю тебя на космодуель!"
Отчаявшиеся и обозленные капитаны отправились к ближайшей черной дыре. Да начнется схватка, не на жизнь, а насмерть!

Описание геймплея:
Главная цель игры проста -- разложить на атомы своего соперника, оставив в целостности себя. 
Уничтожить противника можно и оружием, но никто не отменял возможность заманить его прямо в прожорливую червоточину!
Арсенал:
1) Космоторпеды. Летят по инерции. Подчиняются законам физики. Можно сбить лазером.
2) Лазерная указка. Не подчиняется законам физики, но наносит малый урон. Сложно целиться в движущиеся цели.
Игра проходит в режиме хот-сит. 

Управление:
первый игрок (справа):
W, A, S, D -- передвижение
Q -- пустить торпеду
E -- включить лазер
второй игрок (слева):
I, J, K, L -- передвижение
U -- пустить торпеду
O -- включить лазер

Описание кода:
1) main.py -- основной файл. инициализирует игру.
 - здесь ничего интересного
2) game.py -- код игры здесь
 - игровые константы, логика, геймплей, обработка событий
3) graphics.py -- графические методы
 - класс меша, графическое окно
4) phys.py -- физическй движок
 - класс вектора, класс материальной точки

Некоторые моменты:
* ) Очень интересно играться с константами в начале кода! Я гарантирую это!
* ) я ввел собственные относительные координаты. Центром дисплея считается координаты 0, 0. Центр слева: -1, 0. 
* ) игровой фон генерируется процедурно.
* ) Основа архитектуры -- понятие актера. У каждого игрового объекта есть обязательные методы. Подробнее -- в коде. Я считаю, что архитектура отлично построена, особенно если ее немного перестроить. 
* ) если присмотреться к коду, то можно найти много мест, оставленных на будущее расширение.
 - например, ввод сетевой игры требует лишь небольшой модернизации обработчика эвентов. Затем изменяем константы схемы управления на эвенты с сервера. 
 - чтобы добавить систему бонусов во время игры (типа ускорения стрельбы), стоит лишь добавить соотвествующий метод обработки столкновений и класс бонусов.
 - можно сделать разные меши у разных игрков. 
 - да и в принципе архитектура такова (даже текущая), что ее относительно легко модернизировать. (а если ее еще и переосмыслить, то вообще)

Неприятные нюансы и известные баги:
* ) Структура кода напоминает мутанта. Т.к. я не занимался планированием, произошло наслоение идей по структуризации и некоторая путаница в классах. Попыткой хоть частично устранить это был модуль с графикой, куда я поместил меш.
Решением данной проблемы я вижу переосмысление кода. Т.е. перерастаскать методы и логику. В принципе, и так работает, но модернизация кода становится все тяжелее, и тяжелее
* ) Код документирован со средним качеством. 
* ) Из багов: относительные координаты дисплея странным образом в некоторых местах увеличиваются в два раза, а в других уменьшаются также. Решение проблемы сейчас -- костыли. Решение проблемы в дальнейшей перспективе: переосмысление кода, ибо я сам уже запутался, что, где и как.
* ) Графика игры желает лучшего. Не хватает времени и желания улучшать качество мешей.
* ) Я думал, что смогу заставить себя сделать нормальную графику, меню, синглплеер с астероидами, бонусы (типа удвоенного лазера, ускоренной стрельбы), но я еще никогда так не ошибался!
* ) Внутриигровая физика довольно проста.


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages