|
0 / 0 / 0
Регистрация: 07.01.2013
Сообщений: 7
|
|
Подключаюсь к Си, пишу свой движок для игр11.01.2025, 21:29. Показов 6118. Ответов 24
Здравствуйте ребята.
Вливаюсь в Си. Сам опытный разработчик с 13 годами стажа. Делаю игры на Unity год назад сделал там свой движок и делал игры этот год только на нем. Вот решился написать следующую версию без Unity с нуля так сказать. Начал хорошо, написал корень движка, с первых секунд влюбился в язык Си - он волшебный! Но вот беда, возникают проблемы с подключением библиотек, каждой что то свое надо. SDL2, OpenGL, Glew подключить вышло и теперь даже знаю порядок что да как делать. И настало время поработать с UI в виду того что Nucklear написан на Си без привязки к C++ и довольно обширен, решил воспользоваться им. Но большая беда с ним, он не хочет работать, очень много разных ошибок собака выводит. В итоге я вроде понял что надо просто файл nuclear.h закинуть в проект и путь к нему указать. Но все равно все время какие то проблемы возникают и так я и не вывел все еще ничего из него на экран. Буду весьма благодарен если получу помощь, может совет какой по смене nuklear на что то более подходящее. Отговаривать и говорить что глупо писать свой движок не надо)) все знаем и учитываем и решение принято на очень трезвую голову и со смыслом. Если опытный человек в Си помог бы при звонке, ответив на вопросы то я бы с радостью оплатил бы данную помощь. Буду очень рад желающим.
0
|
|
| 11.01.2025, 21:29 | |
|
Ответы с готовыми решениями:
24
Движок для игр на основе С++ Подскажите пожалуйста движок для создания игр с пониманием основ языка Cи и С++. |
|
Невнимательный
|
|||
| 11.01.2025, 22:03 | |||
|
https://stackoverflow.com/ques... -c-project
0
|
|||
|
267 / 199 / 30
Регистрация: 26.11.2022
Сообщений: 859
|
||||
| 11.01.2025, 23:30 | ||||
|
так что выбираете с чем компилите - SDL или glfw , нативные API, версию и пр. и просто переносите в свой проект. Потом сможете доработать. из библиотек для ГУЯ лично мне больше imgui понравился, под мои задачи подошел как нельзя лучше. Хотя я на С пишу но прикрутить одно к другому не проблема. но в imgui всё красивее из коробки и есть дополнительный сторонний функционал: implot и imguifiledialog которые мне очень нужны были.
0
|
||||
|
Модератор
|
||||
| 12.01.2025, 11:29 | ||||
|
Хотя stb можно заменить на другие, но тогда под каждый формат придется использовать свое, например libpng и libjpg для png и jpg, freetype для шрифтов, zlib как зависимость и для сжатия, для звука libogg или vorbis, для моделей fbxsdk для fbx или универсальный assimp, для json nlohman-json, для звука OpenAL, для физики PhysX или Bullet для 3д или Box2D для 2д и тд. Про nucklear уже написали, что надо к нему добавлять (либо если есть из либы, либо писать самому) реализацию для графического апи и для создания окна. В этом плане imgui куда приятнее и постоянно обновляется, хотя так же требует тех же реализаций. Но все эти immediate mode гуи прилично портят состояние рендера, которое надо постоянно восстанавливать, имхо от этого только падение фпс и в релизе я бы ничего подобного не использовал, лучше самому написать гуй, тем более в играх он не сложный и обычно отличается от обычных
0
|
||||
|
267 / 199 / 30
Регистрация: 26.11.2022
Сообщений: 859
|
|
| 12.01.2025, 12:59 | |
|
alecss131, SDL оно очень сильно нужно и не только для контекста GL, что для кросплатформенности уже достаточно сложно сделать. Не забывайте прежде всего про то что SDL кросплатформенная и даёт унифицированный интерфейс к клавиатуре, мыши, джойстикам, звуку, таймерам, потокам, мьютексам и пр.
в GLFW есть небольшие траблы с клавиатурой - там не всё прям сразу работает при переключении раскладки (я не говорю про винду). Если в игре предусмотрен чат и надо будет что-то писать по русски то лучше обратить на это внимание. GLM - вы это серьёзно в разделе языка С предлагаете ? для С подходит https://github.com/HandmadeMath/HandmadeMath Вот STB это кладезь знаний того как писать на С. так же много вснего можно подсмотреть в исходный кодах https://github.com/nothings/single_file_libs Для обучения очень хорошо https://kohiengine.com/ как раз движек на С и вулкане. выкачивайте с ютуба ))
0
|
|
|
Модератор
|
||||
| 12.01.2025, 13:11 | ||||
|
после плюсов непривычно, но когда привыкнешь, то удобно
0
|
||||
|
0 / 0 / 0
Регистрация: 07.01.2013
Сообщений: 7
|
|
| 12.01.2025, 13:44 [ТС] | |
|
Ого вы активные. Спасибо всем!
nuklear выбрал по той причине что он написан на Си и если честно его визуал мне больше понравился. Не уж то действительно в продакшен его пускать нельзя? И все пилят свое? Пилить свое меня соблазнило. Единственное шрифты напрягают.
0
|
|
| 01.06.2025, 10:08 | |||||||||||||||
Я не вижу в чём SDL уступает GLFW, а вот в GLFW я нашёл недостатки для себя:
0
|
|||||||||||||||
| 01.06.2025, 10:27 | ||
|
https://itch.io/game-assets/tag-gui (Free)
0
|
||
|
Модератор
|
||
| 01.06.2025, 12:20 | ||
|
Кроссплатформенность мне не интересна, но по той же ссылки где написано про поддержку андроида, есть ссылка на гит где люди показывали рабочий пример на андроиде. Еще я помню создавал контекст для GLES, хоть это было на винде и для запуска требовался транслятор, но поддержка этого есть, значит по сути поддержка андроида уже есть. Сборка натива для веба считаю бредятиной, думаю найдутся умельцы, а точнее извращенцы, которые соберут нативы под веб, а потом это упакуют в электрона для запуска вне браузера. В любом случае это прикручивание виртуальной машины для исполнения нативного кода. Про iOS не знаю, особенно что с С/С++ и OpenGL под него, так как там основные языки это ObjC и Swift, хотя про первый уже не уверен. Там и Swift с апи Metal приятнее будут. И кстати на андроиде для звука есть свое апи, так что никакой OpenAL не нужен, там это OpenSL ES
0
|
||
| 01.06.2025, 14:37 | ||||||||||||
Эти функции позволяют один и тот же код ниже, который просто красит холст на OpenGL, собирать для различных платформ: Windows, Linux, Android, WebAssembly и т.д. Собирается и работает без всяких проблем. Нет проблем вызывать SDL_Init() и т.д. main.c
Вообще было был лучше изучать OpenGL параллельно на JavaScript на WebGL, потому что на нём ничего не надо ставить и собирать из исходников. Намного меньше, где можно застрять и намного больше возможностей и очень легко обучаться. На готовом графическом 2D API SDL3 много ограничений и почти всё скрыто. Обучаться программированию графики лучше на шейдерах и glMatrix. На JS и WebGL какое-то время можно пользоваться онлайн-редактором https://plnkr.co/ вместо Sublime Text 4. GUI можно делать на HTML и CSS. SQL можно изучать в песочнице Glitch. На Glitch есть встроенная база данных для серверной части - SQLite. Серверную часть можно писать на JavaScript и Node.js Пересылать сообщения от клиента к серверу можно с помощью WebSockets. Приложение не нужно будет собирать в EXE, а достаточно опубликовать ссылку на хостинг (что Plunker, что Glitch, что Netlify) и приложение или игра будет запускаться в один клик на любой ОС. Для звука можно использовать Web Audio API, что поможет изучать OpenAL. Есть порты и сборки Box2D (box2d-core, Box2D-WASM) и Bullet Physics (Ammo.js) - по ссылкам в скобках простые примеры. Практика на JavaScript, HTML и CSS больше даст возможностей зарабатывать. Проще будет зарабатывать на играх, встраивая их в соц. сети. Даже Unity-WebGL сложнее встроить, чем SDL3-WASM, а тем более сложнее, чем JavaScript. Ещё сложнее будет если взять GLFW или SFML для Android. А ещё сложнее собирать в EXE и с EXE пытаться зарабатывать на Steam. Такое моё мнение. Это пример одного из разработчиков, которого я упоминал выше (maarten): https://github.com/madebr/sdlcross/tree/SDL3 Я собирал этот пример для Android (пример на Си и SDL3 2D API) и я написал пошаговую инструкцию. Если кто-то решит собрать по этой инструкции и запустить на реальном Android и будут проблемы, то пишите. В этом примере при касании экрана в месте касания появляется квадрат. Если коснуться двумя и более пальцами, то появятся несколько квадратов разных размеров. При перемещении пальцев по экрану квадраты будут следовать за пальцами. Хороший пример отлично реализованной поддержки, как поддержки Android в виде реализации необходимого API, так и поддержки разработчиками на Discord (запрещён в РФ), официальном форуме и Github. Мне так же ни раз помогал самый главный разработчик - slouken и многие другие. Я почти уверен, что на GitHub-репозитории GLFW если бы я создал Issue касательно какой-нибудь проблемы на Android, то мне бы ответили, то Android официально не поддерживается. Очень сильно выручает Discord (запрещён в РФ), которого нет у GLFW. Мне по Android и SDL3 очень много помогли - на самом деле, оказалось очень легко работать на Android из SDL3, особенно, после сборки в WASM из Cordova.
0
|
||||||||||||
|
Модератор
|
|||||||||||||||||
| 01.06.2025, 15:04 | |||||||||||||||||
|
Сейчас нашел как это правильно отключить
Я писал на С++ и OpenGL на андроиде, но без ввода, GLFW Не использовал, а для OpenGL там никакие загрузчики не нужны, создание контекста не сложное и есть полностью в стартовом проекте если выбрать GameActivity. У меня в планах дальше разбираться в андроиде (в рамках С++ больше), включая ввод. После беглого поиска нашел что можно сделать ввод и мультитач и джойстики без использования Jni Не надо поддерживать зло в виде упаковки веба в электрон и выдачу этих поделий за программы, которые едят дофига и тормозят и лагают.
0
|
|||||||||||||||||
| 01.06.2025, 17:29 | |||||||||||||||||
Небольшая инструкция, как собрать проект с помощью MinGW GCC 11.2, взятому из Qt 6.6.3:
Структура проекта: Может кому-то пригодится. Если авторе темы вернётся, то может попробует и задаст вопросы, если что-то не работает или что-то непонятно. Прикрепил код примера. main.c
0
|
|||||||||||||||||
| 01.06.2025, 21:19 | |||||||||||||||||||||
Надо брать примеры в разработку и тренироваться программировать, упражняясь на простых играх + Box2D v3, а так же попутно изучать программирование графики. Понятно, что лучше начинать с 2D. Больше 10 лет назад я прочитал книгу Кернигана и Ритчи сначала на русском, потом на английском. Очень хорошая. Если автор вернётся, то найдите эту книгу. Она так же актуальная как первая ступень на пути к C++.
0
|
|||||||||||||||||||||
|
Модератор
|
|||||||
| 01.06.2025, 23:05 | |||||||
|
Попробовал третью, работает как я привык, хорошо что они по умолчанию отключили использование своей точки входа. Создал себе шаблонный проект, так мне куда приятнее и привычнее
static func main(). То есть при старте язык передает управление в 2 указанных места в коде.Использовал уже собранную студией на винде, только распихал по нужным папкам в проекте, подключил и написал модуль файл. Либа не модифицировалась для работы с языком.
0
|
|||||||
| 02.06.2025, 13:33 | |
|
Я уверен, что студентам практиковаться со основами GLSL в OpenGL очень сильно полезно хотя бы на самых базовых основах, даже если они будут использовать Unity, а скорее всего, именно Unity будут использовать более 90% студентов, кто выбрал разработку игр в качестве будущего заработка, потому что Unity самый популярный в РФ по вакансиям и прост в программировании на C#, поэтому на Unity больше шансов студентам найти работу. С определённого этапа в Unity надо писать шейдеры на языке HLSL, или вносить правки в существующие шейдеры, а GLSL очень похож на HLSL. Я считаю, что какой-то минимальный опыт работы с вершинным и фрагментым шейдером нужно получить и получить его на любом языке - особо неважно на каком, так как работа с GLSL абсолютно одинакова на любом языке программирования. Для изучения этих базовых основ GLSL подойдёт любой язык: C, С++, JavaScript, Python, Java, C# и т.д. Надо ограничиться только самыми базовыми основами работы с вершинным и фрагментным шейдером, а дальше лезть в изучение OpenGL нет никакого смысла. Достаточно изучить базовое направленное освещение, точечное освещение, shadow map, normal map, specular map, определение клика по color id, базовую скелетную анимацию и можно затронуть смешивание анимаций - для базового понимания линейной алгебры для работы с матрицами и векторами этого дотаточно. Лучше всего параллельно изучать Unity и основы GLSL.
В Unity очень часто для 2D игр и даже для 3D (например, для 3D-платформеров c 2D физикой) используется Box2D, но в Unity-обёртке, которая почти один в одни повторяет Box2D. В инспекторе Unity можно увидеть теже самые настройки физики, как если использовать Box2D в чистом виде. Поэтому, я считаю, что очень полезно познакомиться с основами Box2D на каком-нибудь языке и неважно какой это язык, хоть C, хоть JavaScript. Можно на C#, чтобы было проще переключаться на Unity. Для каждого языка есть свой порт Box2D, в том числе на C#. Можно взять LibGDX на Java, в котором есть Box2D. LibGDX по работе с 2D API точно такой же, как Pygame, SDL, SFML, Phaser и т.д. У LibGDX огромное сообщество на Discord (запрещён в РФ) - можно практиковать английский. Для знакомства с основами Box2D неважно какой язык взять, как и для изучения основ GLSL. Соглашусь, что очень глупо тратить время на погружение в дебри низкоуровневых API типа OpenGL 4.6, Vulkan, Direct3D и т.д. У студентов обычно Windows или Linux, поэтому Metal тоже отметаем. Достаточно только самый базовых основ GLSL, которые я перечислил выше и работы с матрицами для понимания базовой линейной алгебры на примере анимаций: перемещения, поворота, изменения размера, keyframe-анимации, скелетной анимации, анимаций на физических движках Box2D и Bullet Physics. Поэтому для изучения основ GLSL надо брать OpenGL 2.1 и не выше или WebGL 1.0 (который базируется на OpenGL ES 2.0). Начинать изучать Vulkan или OpenGL 4.6 студентам - это абсолютно мёртвый путь, туда ходить ни в коем случае не надо. Vulkan отнимет кучу времени и никак не поможет в понимании основ компьютерной графики, редактировании или написании шейдеров на HLSL в Unity. Может даже лучше изучать основы GLSL на C# и OpenTK, чтобы проще переключаться на Unity, а проще всего на WebGL и JavaScript по книге с Ozon: WebGL. Программирование трехмерной графики (авторы: Kouichi Matsuda и Rodger Lea). Правда, стоит она сейчас 2 тыс. рублей, а я покупал более 5 лет назад на 900 рублей. Первый раз можно прочитать на русском, а потом лучше читать на английском. Здесь примеры с использование glMatrix (аналог GLM): Небольшие примеры на WebGL
0
|
|
|
Модератор
|
||||
| 02.06.2025, 14:46 | ||||
|
Изучение графических апи полезно только для написания движков. Просто так учить графику бесполезно и просто потеря времени. Пользы никакой. Что ogl 1 что glsl. Даже на движка игры создавать в одиночку такое себе, игры создаются командами, причем без дизайнеров никуда.
0
|
||||
| 02.06.2025, 23:28 | ||||||
|
0
|
||||||
| 03.06.2025, 00:14 | |||||||
Демка в браузере (WASM) Я подключил библиотеки: SDL3, cglm и glad. Можно собрать прикреплённый проект по инструкции.
0
|
|||||||
| 08.06.2025, 14:57 | ||||||||||||||
|
Потому что если гуглить "Nuklear GitHub", то "/vurtun/nuklear" будет выше в списке в поиске. Первая библиотека в списке выше заморожена с 2019 года, а вторая активна. По первой ссылке в описании написано (автоматический перевод):
Демка в браузере: https://nuklear-opengl-sdl3-c.netlify.app/ main.c
Инструкция по сборке примера для Windows и WASM с помощью MinGW Но надо будет скопировать папку SDL3 и glad в libs и поменять пути на относительные пути в config.bat и CMakeLists.txt или использовать абсолютные пути а библиотеки положить в одну общую папку, например, в папку E:/libs, так как в прикреплённом примере к данному сообщению я подключил библиотеки из общей папки по абсолютным путям.
0
|
||||||||||||||
| 08.06.2025, 14:57 | |
|
Помогаю со студенческими работами здесь
20
под движок Source делаю свой мод как написать свой движок для сайта? Написать свой движок с нуля Закрепить в проект свой движок Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1
У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\
А в самом низу файла-профиля. . .
|