-
Notifications
You must be signed in to change notification settings - Fork 0
Xyzzyall/Starbattle
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
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 0
No packages published