Войти
ПрограммированиеФорумОбщее

Движок на Си

Advanced: Тема повышенной сложности или важная.

Страницы: 1 2 317 18 Следующая »
#0
17:15, 6 июня 2019

Почти два года в свободное от работы время пишу движок на Си (C99 если точнее) с минимальным количеством внешних зависимостей - на данный момент у движка всего одна зависимость (miniz_tinfl).

Ключевые особенности:

- Не требует сборки - нужно всего лишь добавить пару файлов в свой проект.
- Поддержка моделей в FBX
- Граф сцены
- Автоматическое управление ресурсами
- Рендер основан на OpenGL 3.3 Core
- Софтварный звук (3D + 2D)
- Поддержка TTF шрифтов
- Встроенный сериализатор - полное состояние движка можно сохранить\загрузить за один вызов.
- Продвинутый GUI (вдохновлен WPF) с множеством виджетов
- Встроенный поиск пути
- Position-based физика
- и много другое - подробнее на странице в гитхабе

Страничка на гитхабе - https://github.com/mrDIMAS/DmitrysEngine


#1
17:40, 6 июня 2019

https://github.com/orangeduck/Corange/

#2
18:18, 6 июня 2019

mr.DIMAS
> движок на Си
Звучит, как что-то очень ненадёжное. Почему не C++?

#3
19:29, 6 июня 2019

Panzerschrek[CN]
Это на Си то не надежно? Прямо смешно, так и хочется написать:"Какие ваши доказательства?"
Но это все оффтоп а то и флейм.
Можно не отвечать.

#4
20:26, 6 июня 2019

Должно было быть на Расте. Шутка.

#5
(Правка: 21:17) 21:15, 6 июня 2019

lookid
Видел, но он довольно плохо написан.

Panzerschrek[CN]
> Звучит, как что-то очень ненадёжное
Почему?

TheLightWay
+1

Wobbit
Раст стал раздражать медленной компиляцией - а ведь у меня всего то 4к строк было в проекте а время компиляции было аж 20 сек в дебажной сборке, поэтому пока отложил его (но язык в общем то хороший, от своих слов не отказываюсь). В тоже время 20к строк на Си компилятся за 1,2 сек со всеми оптимизациями.

#6
21:36, 6 июня 2019

Помнится, на си без плюсов у меня тексты программ к какой то момент стали на четыре пятых состоять из префиксов. В чужих проектах видел тоже самое.
Так что, надо не создавать себе неудобств и программировать на С++, если только это явно не запрещено.

#7
21:44, 6 июня 2019

Zab
> Помнится, на си без плюсов у меня тексты программ к какой то момент стали на
> четыре пятых состоять из префиксов.
что за префиксы? зачем

#8
21:48, 6 июня 2019

А теперь смотрим на реакцию зарубежных товарищей
https://www.gamedev.net/forums/topic/702676-modern-game-engine-written-in-c/
Я специально там в первую очередь создал тред, потому как здесь в общем то одни советчики которые знают как надо (тм).

#9
21:54, 6 июня 2019

mr.DIMAS
Это круто!) Всегда хотел написать что-то серьезное на Си, но как=то не осиливал.

#10
22:30, 6 июня 2019

mr.DIMAS
Мне все понравилось, и все таки кажется странным реализация оконной системы
под две платформы win32.c и x11.c.
Да я понимаю что хочется минимума внешних зависимостей но кажется SDL2 сюда подошел бы отлично. Тем более он тоже на C99. Но это так, просто а сама работа крутая!

#11
23:43, 6 июня 2019

TheLightWay
1200 строк вс зависимость размером побольше чем весь движок.

#12
(Правка: 8:55) 0:01, 7 июня 2019

u960
>> четыре пятых состоять из префиксов.
> что за префиксы? зачем
Имена длинные, префиксы имен - классифицирующие. А как иначе, если язык контекстов толком не поддерживает? Имен то многие десятки тысяч, их надо как-то организовывать, чтобы самому себя не запутать.

Когда С++ только появлялся, я переходить то на него не спешил. И уж тем более не переводил на него старые проекты. Программировал на си без плюсов вполне себе объектно-ориентированно, а это определяло довольно громоздкий код.
С ним можно работать, если условия заставят - почему бы и нет. Но когда можно выбирать си или C++, выбор очевиден.

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

#13
7:45, 7 июня 2019

Zab
> Имена длинные, префиксы имен - классифицирующие.
Вы имеете ввиду с помощью префиксов обозначать их модульность типа: SV_***** - серверные функции, CL_**** - клиента, RD_**** - рендер и так далее?

Если да, то пишу без префиксов, называя функции тем, что они выполняют, благо игра этому способствует сама (Get_Player_HP, Load_Model_From_File, Load_Model_From_Memory и т.д). Кода не много около 50к, проблем пока нет.

#14
8:44, 7 июня 2019

u960
> Вы имеете ввиду с помощью префиксов обозначать их модульность типа: SV_***** -
> серверные функции, CL_**** - клиента, RD_**** - рендер и так далее?
>
> Если да, то пишу без префиксов, называя функции тем, что они выполняют, благо
> игра этому способствует сама (Get_Player_HP, Load_Model_From_File,
> Load_Model_From_Memory и т.д). Кода не много около 50к, проблем пока нет.
У тебя может быть условное перечисление, где одно из имён может спокойно совпадать с именем какой-нибудь структуры и проч.

Страницы: 1 2 317 18 Следующая »
ПрограммированиеФорумОбщее