Add Developer Experience
							parent
							
								
									db38bb26e2
								
							
						
					
					
						commit
						b85de84681
					
				
							
								
								
									
										35
									
								
								Developer-Experience.md
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
									
									
								
								
								
							
						
						
									
										35
									
								
								Developer-Experience.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,35 @@
 | 
			
		||||
This is the (planned) workflow for engine and game development.
 | 
			
		||||
The goal is a smooth experience that reliably delivers stable games.
 | 
			
		||||
 | 
			
		||||
## Engine
 | 
			
		||||
The engine lives inside [this](https://libneat.hopto.org/git/kevin/rtengine) git repository.
 | 
			
		||||
It uses [https://mesonbuild.com/](meson) as it's build system and makes use of it's wrap feature to fetch dependencies (except some that are currently vendored-in inside the contrib/ directory).
 | 
			
		||||
 | 
			
		||||
Code changes are pushed to feature branches and trigger a CI pipeline that builds the engine, runs automatic tests and, if successfull, builds a packaged version as an artifact.
 | 
			
		||||
The engine contains **libasset_compiler** for building *resources* from source assets.
 | 
			
		||||
A command-line tool **assetc** uses this library to build all (changed) source assets during CI execution.
 | 
			
		||||
The packaged build also contains the compiled resources.
 | 
			
		||||
 | 
			
		||||
**libasset_compiler** can be embedded inside the running game to compile changed assets during runtime for faster iteration speeds.
 | 
			
		||||
The resource-system inside the engine notifies other systems about changed resources which can then updated during runtime.
 | 
			
		||||
 | 
			
		||||
## Game
 | 
			
		||||
 | 
			
		||||
Games use the engine as an subproject (possibly also via meson-wrap) and fix it to a specific version (to prevent engine bugs from breaking game-dev).
 | 
			
		||||
The same CI process as for the engine should also apply to the game, with extended and/or replaced tests.
 | 
			
		||||
 | 
			
		||||
## Art
 | 
			
		||||
 | 
			
		||||
Art needs to be put into the game. For the forseeable future, we don't have in-house artists, so this will mostly go through the same process as Code changes.
 | 
			
		||||
In the future, it's possible that artists use a packaged (tested) build from CI to put their assets into the game and check in the assets via git (or a GUI frontend for that purpose).
 | 
			
		||||
 | 
			
		||||
## Engine/Game resources combined
 | 
			
		||||
 | 
			
		||||
The engine (will) supports a *Virtual File System* that allows us to map multiple "physical" paths to the same "virtual" path.
 | 
			
		||||
For example:
 | 
			
		||||
 | 
			
		||||
> /game/resources -> /resources
 | 
			
		||||
>
 | 
			
		||||
> /game/submodules/engine/resources -> /resources
 | 
			
		||||
 | 
			
		||||
Resources in both physical directories will show up in the same virtual directory, allowing the game to use resources without distinguishing between engine and game assets.
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user