Metroline - редактор транспортных схем (в т.ч для Minecraft).

5,104
49
854
Metroline

Изначально проект задумывался как коммерческий и даже как относительно интересная игра - вот тут можно почитать старую тему.

В конечном итоге проект не дожил до нормального релиза потому что мне надоело и был урезан в обычный редактор за несколько дней на прошлой неделе, чтобы уж совсем в топку не выкидывать три месяца усилий. Технически, он относится к тематике сайта, т.к многие очень любят копать в майнкрафте, в частности копать метро, а также рисовать во всяких РП-группах схемы своих туннелей. (легальность размещения оправдана!)
Так что я думаю, публикация его здесь оправдана. Кроме того, проект решил в итоге сделать open source по GPL 3.

Написан с нуля на Java без библиотек. Единственное - была использована в качестве inline кода звуковая либа доисторических времен по загрузке и воспроизведению mp3, очень сильно переделанная и отрефакторенная под читабельный вид, поэтому ее название уже можно даже не упоминать. Да я его и не помню :)

Можно ставить\удалять станции, соединять их туннелями, двигать по всякому, редактировать свойства и виды станций (например название, год постройки, архитектора и так далее - динамический список позволяет вам сколько угодно пар ключ-значение сделать, а виды - закрытая, открытая, разрушенная, ремонтируемая и так далее), рисовать реки, рисовать клетки воды, сохранять это все дело в PNG вплоть до разрешения в 64к (если кому то надо вообще такое разрешение)

По архитектуре старался полностью следовать SOLID, поэтому в целом можно с небольшими трудопотерями вытащить оттуда базовый код движка - отрисовка экранов, тайлов, размещение логических элементов. Я его назвал конечно же, в честь себя - VMAEngine2D (а кто запретит?). Может попозже сам его выделю в отдельный 2D - простенький движок.
По графической части много оптимизаций в плане отрисовки, во первых все изображения идут через видеокарту, во вторых максимально оптимизированы процессы работы с памятью, запилен свой инкрементальный сборщик мусора (ну типа - понятно что на основе стандартного). Также сделана система частичного кэширования и сжатия клеток. В целом для однотонной карты можно вообще было бы хранить 1 пиксель, но такой задачи изначально не было, поэтому все сжимается в картинку где 1 пиксель - 1 клетка. Потом масштабируется на видеокарте.
Отрисовка станций и туннелей идет в рантайме, но даже для довольно большой карты серьезного влияния на производительность не заметил

Потребление памяти: 50-200 мб
Нулевая нагрузка на процессор
10-15% нагрузка на видеокарту
Размер программы 15 мб, из которых 14 - ассеты.


Страничка проекта (ссылка на скачивание там, но зацените страничку :) )

GitHub
1.png

2.png
3.png
4.png
6.png
8.png
 
Последнее редактирование:
Назад
Сверху