What is the workflow?
Hi, I'm currently learning C++, and I want to make a game in this engine.
How does the workflow go? Is the majority of the game logic(weapons for example) hard-coded, or made using scripting? How do I binarize(encrypt, archive) the assets for my project? How do I create levels and export them?
And the most important: when will daNetGame release? and what is the "pretty games framework"?
edit: how to build via the .sln file? or is jam the preferred build option?
Logic is not hardcoded at all (in any case), it can be written in C++ or in DAS but it is usually data-driven (customized with configs).
You setup assets base in develop/ folder and dabuild tool will build assets to game resources (to game/ folder) gathered in packs (res and tex packs) to be usable by game. The same for levels (locations) - you have source data in develop/levels/ and export binary dump for game fro daEditorX (to game/levels/), and only these dumps can be loaded by your game.
In addition to these main data files you can build your scripts, configs, etc. (usually many small files) to vromfs (virtual read-only file system) dumps to speadup loading and reading and to optionally verify your data is not modified (vromfs may be signed and chacked against signature on load).
daNetGame already is uploaded to repo (though it misses some parts like weapon or human libraries), it is used for 2 sample projects - OuterSpace and dngSceneViewer.
For building you should use jam in any case (building with SLN is not viable option) but we plan adding SLN files to simplify VS / VScode integration (one will be able to start jam with proper options just from IDE to build project and codebase is scanned for Intellisense). I can't give exact dates but we expect this update soon.
Is daNetGame a sample project/game, or just a library/framework?
And another question:
How can I re-enable the old UI for the editor?
daNetGame is framework (set of libraries and init/render/net code). What do you mean by old UI, the one before imGUI-based? (it was so-called separators-GUI based heavily on WinAPI) It can be restored only by rolling back repo to pre-Sep-2024 and building tools. We now have switched to imGUI fully (to provide working editors on linux and macOS) and will not return to older UI.
Thanks for your answer. How to use daNetGame in a new project?
Start with studying outerSpace/prog or samples/dngSceneViewer/prog, jamfile and shaders/compile_shaders_*.* (that uses in turn shaders_*.blk to setup needed shaders).
outerSpace is complete sample that demonstrates client/server and game scripts, while dngSceneViewer is just client that uses ECS entities and scripts to animate scene and setup final picture, with small DAS script that emulates FPS-like motion using keybord and mouse.
Both use some UI (daRG-based layout and scripts), both use daInput to process input actions (from mouse, keyboard, gamepad) in unified way, both can load location from dagor binary dump and scene of ECS entities and both use render part of daNetGame to render loaded and dynamically changed world.
Next step is preparing application.blk and develop/ folder that contains source data for assets and locations. Better look at outerSpace. One needs tool shaders (subset of shaders built to be used in tools, AssetViewer, dabuild and daEditorX) and minimal set of rules how to scan asset base (in .folder.blk files). After that artists can develop models and locations white programmers will focus on implementing gameplay for that art.
To be able to use game resources in game you build assets with dabuild tool (usually to game/content/base/res folder) and export location in daEditorX (usually to game/content/locations/ folder). If you use vegetation in your game project then you will need pre-baked impostor textures for trees, this can be done with daImpostor tool.
For game code you have 3 options:
- write native C++ code that uses API provided by
daNetGame,daNetGameLibsand more base libs (gameLibsandengine) - write DAS scripts (daScript or daslang) to implemented needed ES (entity systems, i.e. handling update and other events for ECS enitites in ECS manner)
- write NUT scripts (Quirrel or Squirrel) to do the same as DAS and also UI scripts (both code and layout) Using scripts gives faster develeopment iterations with hot-reload (available for DAS and NUT), also IDE integrations for scripts is available for VScode.
Logic is not hardcoded at all (in any case), it can be written in C++ or in DAS but it is usually data-driven (customized with configs). You setup assets base in develop/ folder and
dabuildtool will build assets to game resources (to game/ folder) gathered in packs (res and tex packs) to be usable by game. The same for levels (locations) - you have source data in develop/levels/ and export binary dump for game fro daEditorX (to game/levels/), and only these dumps can be loaded by your game. In addition to these main data files you can build your scripts, configs, etc. (usually many small files) to vromfs (virtual read-only file system) dumps to speadup loading and reading and to optionally verify your data is not modified (vromfs may be signed and chacked against signature on load). daNetGame already is uploaded to repo (though it misses some parts like weapon or human libraries), it is used for 2 sample projects - OuterSpace and dngSceneViewer. For building you should usejamin any case (building with SLN is not viable option) but we plan adding SLN files to simplify VS / VScode integration (one will be able to startjamwith proper options just from IDE to build project and codebase is scanned for Intellisense). I can't give exact dates but we expect this update soon.
There should be a C++ (with NUT scripts for UI) game sample, because alot of people, when inspecting and looking at Dagor, see it as a C++ engine.