2D движок 2D_Sapphire 0.4a

Закрытые или заброшенные проекты, не состоявшие в Клубе, но имевшие ветку на форуме.

Модератор: Jolly Roger

Аватара пользователя
warchief
Сообщения: 300
Зарегистрирован: 11 янв 2008, 09:55
Откуда: Озеро снов

2D движок 2D_Sapphire 0.4a

Сообщение warchief » 23 фев 2011, 15:52

Новая версия:
Скрытый текст: ПОКАЗАТЬ
>>>------ ИСТОРИЯ ------<<<
+ добавлено
- убрано/ошибка/недостаток/недоделано
! идея/задача
? неясность
* модифицировано/изменено

>>>------ ВЕРСИЯ 0.4a ------<<<
* рефакторинг кода
* другие изменения и новые функции (я забыл вести историю)


>>>------ ВЕРСИЯ 0.3 ------<<<

== Общие ==
* некоторые изменения в философии движка. cFramework теперь является абстракцией, что позволяет создавтаь сразу несколько таких объектов с разным поведением и вызывать их по мере необходимости.
* виртуальная функция cFramework::Run() стала методом и была переименована в Start(). также к ней были добавлены получаемые переменные позволяющие обрабатывать все действие, или только рисовать или только обрабатывать событие или вообще ничего не делать.
* движок gперименован вв 2D_Sapphire.

== Графика ==
+ ImageDraw() с возможностью масштабирования изображения
+ у класса cImage появился метод resize() позволяющий заблаговременно задать нужный масштаб для рисунка
+ Добавлен полноценный класс Color на основе исходников TCOD, старый класс ColorRGBA удален.
+ Для работы с цветом без создания самого объекта цвета добавлена функция getColor()

== Недочеты ==
+ исправлена ошибка из-за которой из памяти не удалялся cDisplay
+ теперь кнопка работает с движковым шрифтом.

== Библиотеки помощи ==
+ написана гуи

>>>------ ВЕРСИЯ 0.2 ------<<<

== Общие ==
+ написана тестовая среда для тестирования и дальнейшей разработки движка.
* переписан лог, теперь он выводит еще и время (за основу взят лог из GameBoost)
+ добавлен модуль global.h. В нем объявляются глобальные переменные/константы движка
+ класс cRealTimer для выполнения действия через каждый определенный промежуток реального времени.
* сApp переименован в cFramework
* SDLEvent переименован в cEventHandler
* немного перераспределен код между cDisplay и cEngine
+ Движок теперь может обрабатывать события джостика
+ движок собран в виде динамической библиотеки

== Графика ==
* cDisplay теперь создается глобально. Внесены изменения в код с учетом этого
+ добавлена поддержка растровых шрифтов.
+ тексту можно задать размер и цвет

== Ошибки ==
- Лог не записывает в случае критического вылета.
- Не компилируется под линуксом из-за _strtime и _strdate в логе
- куча мелких недочетов и недоработок

>>>------ ВЕРСИЯ 0.1b ------<<<

* некоторые изменения кода
* метод cImage::get_image()
+ графические методы - DrawRectangle(), DrawLine(), Clear()

>>>------ ВЕРСИЯ 0.1а ------<<<

+ класс cDisplay, отвечающий за работу с SDL и экрана. Методы - init(), draw(), clear(), get_display()
+ класс FPS хранящий количество кадров в секунду. Методы - OnLoop(), GetFPS(), GetSpeedFactor()
+ класс SDLEvent обрабатывающий события
+ класс cImage хранит одно изображение. Методы load(), draw(), clear(), get_name()
+ класс clLog, простой лог
+ методы для работы с изображениями и рисованием - ImageLoad(), ImageDraw(), DrawArea(), DrawRoundedArea()
+ класс cApp наследованный от SDLEvent. Является родителем и должен быть наследован пользовательским классом. Отвечает за работу приложения. Методы - Run(), setdisplay(), get_surf()

Чтобы скомпилировать код, вам нужны библиотеки - SDL_image 1.2.10, SDL 1.2.14, sdl_ttf 2.0.10. В архиве также лежит собраная демка со всеми нужными файлами.
Вложения
Sapphire 0.4a.rar
Движок
(867.82 КБ) 219 скачиваний
600test.jpg
Скриншот текущей версии демки
600test.jpg (72.01 КБ) 8706 просмотров
engine.jpg
Скриншот из версии 0.1 (устарел)
engine.jpg (102.39 КБ) 9058 просмотров
Последний раз редактировалось warchief 13 май 2011, 06:32, всего редактировалось 8 раз.

Аватара пользователя
warchief
Сообщения: 300
Зарегистрирован: 11 янв 2008, 09:55
Откуда: Озеро снов

Re: тайловый движок моего производства:)

Сообщение warchief » 23 фев 2011, 16:06

Да кстати все возможные события описаны в SDLEvent, если вам это событие нужно, то полиморфируйте его в cGame, минуя cApp. Вообще cGame::OnKeyDown() именно так и работает.
Вообще идея здесь такая cApp это глобальное состояние, в данном коде - оно всего одно и выражено в cGame, но позже от cApp я наследую cMenu, и также будут наследованы и другие объекты, при этоя я буду уверен что все они работают именно так как нужно и одинаково. Такой способ очень удобный так как совершенно не нужно волноваться о передаче экрана между кучей объектов, простым способом можно будет вообще записать так:

Код: Выделить всё

cGame game;
cMenu menu;
menu.Run();
game.Run();
И потом только описывая функции рисования и работы и совершенно не думать когда же эти функции будут (и будут ли вообще) вызваны

Аватара пользователя
kipar
Сообщения: 2120
Зарегистрирован: 10 мар 2010, 13:16
Откуда: Москва

Re: тайловый движок моего производства:)

Сообщение kipar » 23 фев 2011, 17:08

В С++ и в SDL я не разбираюсь, с виду код выглядит нормально.
Правда его маловато.
Для тайлового движка стоит добавить хотя бы прокрутку (перемещение наблюдателя), вывод матрицы символов\тайлов и окон поверх нее, вывод текстовых сообщений (или он и так тривиален?).

Менеджер ресурсов есть, но как в нем индексируются тайлы я не понял - неужели просто по номеру?

Скрытый текст: ПОКАЗАТЬ
Да, еще у меня рисует прямоугольники, а скалу не рисует. При этом в консольном окне (и в логе) пишет
cDisplay::cDisplay()
cDisplay::init()

*ERROR: Изображение crystal_alpha4.png не было загружено.


*ERROR: Ошибка загрузки


*ERROR: Произошла ошибка при попытке нарисовать рисунок


*ERROR: Произошла ошибка при попытке нарисовать рисунок


*ERROR: Произошла ошибка при попытке нарисовать рисунок
...
Система - Windows 7, SDL взял из Томе4, файл png на месте.

Аватара пользователя
warchief
Сообщения: 300
Зарегистрирован: 11 янв 2008, 09:55
Откуда: Озеро снов

Re: тайловый движок моего производства:)

Сообщение warchief » 23 фев 2011, 17:21

На счет ошибки - гляньте лежит ли там libpng12-0.dll. Без него рисовать png не будет.
Для тайлового движка стоит добавить хотя бы прокрутку (перемещение наблюдателя), вывод матрицы символов\тайлов и окон поверх нее, вывод текстовых сообщений (или он и так тривиален?).

Менеджер ресурсов есть, но как в нем индексируются тайлы я не понял - неужели просто по номеру?
Ну на мой взгляд прокрутка и вывод матрицы к движку не относятся. Но двиг буду выкладывать по мере работы над кодом (собственно этот двиг будет использоваться мной в обоих рогаликах), так что позже появятся и другие вещи. Вывод текстовых сообщений в старом коде, не был добавлен в этот код только потому что и так рабочий и не требовал переписывания. А вот менеджер ресурсов там быть не должен :D . Я его скопировал и благополучно забыл. хотя да менеджер тоже интересный, следит чтобы в память не совались одинаковые рисунки. Но пока да, просто по номеру. Вообще там идея была такая, каждый тайл имел индекс изображения (что экономит память, или просто число или целый тайл), Потом вызывалась функция AddImage() и по результату она записывала номер изображения в данные тайла.. Хотя теперь думаю что лучше связывать указателем...

Аватара пользователя
kipar
Сообщения: 2120
Зарегистрирован: 10 мар 2010, 13:16
Откуда: Москва

Re: тайловый движок моего производства:)

Сообщение kipar » 23 фев 2011, 17:44

c libpng - все верно.
Насчет функций движка - да, я написал как-то не подумав :)

Аватара пользователя
Toth
Сообщения: 327
Зарегистрирован: 11 ноя 2009, 13:36
Откуда: Красноярск

Re: тайловый движок моего производства:)

Сообщение Toth » 25 фев 2011, 14:51

Не понял суть "движка", похож на "хелло СДЛ!", дальше-то что? Движок, имхо, да хоть полноценный ГУЙ, а?

Аватара пользователя
warchief
Сообщения: 300
Зарегистрирован: 11 янв 2008, 09:55
Откуда: Озеро снов

Re: тайловый движок моего производства:)

Сообщение warchief » 25 фев 2011, 17:27

Залил новую версию, появились новые "фичи" :D.
Все в первом посте.
Самая важная фича - теперь можно рисовать с прозрачностью (на скрине это видно - через пустую панель просвечивает фон)
Не понял суть "движка", похож на "хелло СДЛ!", дальше-то что? Движок, имхо, да хоть полноценный ГУЙ, а?
Ну да, это еще не полноценный движок а скорее надстройка на SDL... На счет ГУИ - я вот сегодня хотел сделать, но потом глянул на другие тайловые игры (elona, tome4 и другие) и заметил одну особенность - а там нет гуи (в привычном для программиста значении). да и зачем он если мышь не используется? А примитивный гуи, как в этих играх, можно уже реализовывать (рисуем картинку или залитый прямоугольник и потом отслеживаем нажатие мыши, в регионе оно произошло или нет).

Да и кстати я не пишу движок, как самостоятельный продукт, я пишу два своих проекта (по очереди :D ), а тот код который можно назвать движком, выкладываю в этой теме. Именно поэтому он и не будет разрастаться теми фичами которые могли бы быть интересными но не востребованы для моих задач. GUI относится как раз к таким фичам, мне он не нужен.... Хотя позже я подумаю и скорее всего прикручу guichan, как опциональную часть.

А теперь еще вопрос - кто-нибудь может подкинуть идею как рисовать миникарту? Чтоб красиво было..

P.S. Основная работа программы описана в editor.cpp. Этот файл является примером, как пользоваться движком. И сам чатсью движка не является.

Аватара пользователя
warchief
Сообщения: 300
Зарегистрирован: 11 янв 2008, 09:55
Откуда: Озеро снов

Re: тайловый движок моего производства:)

Сообщение warchief » 25 фев 2011, 17:52

Ну а завтра (или послезавтра... вообщем в ближайшее время) я добавлю
- вывод текста
- избавлюсь от надоевшей get_surf() путем скрытия display
- позволю менять расширение при инициализации движка
- ну и еще какие графические плюшки
- и пример перерастет в вообщем-то рабочий редактор карт

Аватара пользователя
Jolly Roger
Сообщения: 2973
Зарегистрирован: 27 ноя 2009, 09:10
Откуда: Minsk, Belarus

Re: тайловый движок моего производства:)

Сообщение Jolly Roger » 29 мар 2011, 13:33

Оказывается, ребята из Mages Guild открыли своё двигло:
http://lukos.x10hosting.com/node/9
Писать диздок спустя несколько лет разработки и множества изменений концепции - исконная русская девелоперская традиция.

Аватара пользователя
warchief
Сообщения: 300
Зарегистрирован: 11 янв 2008, 09:55
Откуда: Озеро снов

Re: тайловый движок моего производства:)

Сообщение warchief » 05 апр 2011, 03:43

Хм, у меня сайт не открылся, может кто выложит?

Аватара пользователя
hexMer
Сообщения: 150
Зарегистрирован: 12 сен 2009, 09:48

Re: тайловый движок моего производства:)

Сообщение hexMer » 05 апр 2011, 06:33

Вотъ:
Phasmav2.0.zip
(146.99 КБ) 219 скачиваний

Аватара пользователя
warchief
Сообщения: 300
Зарегистрирован: 11 янв 2008, 09:55
Откуда: Озеро снов

Re: 2D движок 2DWCEngine 0.2

Сообщение warchief » 22 апр 2011, 13:42

=D> А я обновил движок. Теперь у него есть официальное название.

Самое большое нововведение - поддержка вывода текста с графического файла. Там в папке fonts есть несколько шрифтов, можете поэксперементировать. Текст можно масштабировать но качество при этом не очень - над этим я сейчас думаю. Тексту можно задавать цвет, но есть глюк - если вызвать сразу две функции setcolor() друг за другом, то текст почему-то на экран не будет выведен (хм, загадка)

А еще я собираюсь начать писать обучалку создания рогалика. Ну а чтобы зря движок не пропадал, писать буду с его использованием. Первый урок будет с релизом версии 0.3 [-o<

Аватара пользователя
kipar
Сообщения: 2120
Зарегистрирован: 10 мар 2010, 13:16
Откуда: Москва

Re: 2D движок 2DWCEngine 0.2

Сообщение kipar » 22 апр 2011, 17:05

warchief писал(а):Текст можно масштабировать но качество при этом не очень - над этим я сейчас думаю.
Хехе, сейчас на работе прогу на ОпенГЛ перевожу, там такая же проблема.

Аватара пользователя
alexbard
Сообщения: 670
Зарегистрирован: 22 апр 2011, 17:15
Откуда: Украина
Контактная информация:

Re: 2D движок 2DWCEngine 0.2

Сообщение alexbard » 22 апр 2011, 17:19

warchief писал(а):А еще я собираюсь начать писать обучалку создания рогалика. Ну а чтобы зря движок не пропадал, писать буду с его использованием. Первый урок будет с релизом версии 0.3 [-o<
Уроки будут под твой движок или более общего назначения?

И когда релиз-то ? :)

Аватара пользователя
Jolly Roger
Сообщения: 2973
Зарегистрирован: 27 ноя 2009, 09:10
Откуда: Minsk, Belarus

Re: 2D движок 2DWCEngine 0.2

Сообщение Jolly Roger » 22 апр 2011, 18:18

От всей души надеюсь на успех движка.
Сам, естественно, пересаживаться не буду, но КАК он поможет новичкам клуба! =D>

PS
Следующий релиз, думаю, стоит будет объявить на главной!
Писать диздок спустя несколько лет разработки и множества изменений концепции - исконная русская девелоперская традиция.

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 47 гостей