Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Write an introduction for working on thrive (overall architecture introduction) #608

Closed
hhyyrylainen opened this issue Sep 9, 2018 · 5 comments

Comments

@hhyyrylainen
Copy link
Member

hhyyrylainen commented Sep 9, 2018

I suppose I'll repurpose this issue for tracking writing some stuff for the game with Godot now.
In addition to some general godot help: #991

Some kind of overall architecture and where things should go, is probably good as a starting point.
It shouldn't be too detailed, though as there would be a big risk that it gets outdated quickly.

@hhyyrylainen hhyyrylainen added easy documentation engine possibly engine related issue labels Sep 9, 2018
@hhyyrylainen hhyyrylainen added this to the 0.4.1 milestone Sep 9, 2018
@hhyyrylainen
Copy link
Member Author

Here is some info I have collected that should be formatted properly (and written more clearly) and added to thrive / leviathan documentations:

thrive clarification (maybe in leviathan documentation): Basically the
generator file has a list of all the components (including their
constructor arguments) and a list of all the systems (including
arguments to their Run method, possible init method, and potential
nodes {a node is a list of components}). Then an entity is created
with id = GameWorld::CreateEntity() and then components are added to
it with calls to CellStageWorld::Create_CompoundCloudComponent(id, rest of parameters to component constructor). The world object keeps
track of these created components and before the next tick it goes
through the added components and creates (and destroys if components
have been removed) nodes for all systems that an entity has all the
required components for (this is in the individual systems'
CreateNodes method). This isn't done for systems that haven't
specified that they use nodes in the ruby generator file. Then in the
tick method each system is ran starting with the systems defined in
the super classes first.

also this: Nodes are just a way of caching references to components
for systems to not have to search through all the components again. A
better name for it might be CachedComponentCollection

Note about threading and invokes
But it still does run invokes so you need to be careful whenever using them as the object you want to update with the background calculated result may have been destroyed

linux thrive running (in the build folder): cmake .. && make -j 20 &&
(cd bin && ./Thrive) Windows: manually run cmake if you changed any of
the assets or recompiled some of the dependencies. Then build and run
from visual studio.

@hhyyrylainen
Copy link
Member Author

thrive artist notes:

I don't think there is a poly limit as such, but we'd like somewhat old laptops to still run the game fine. For the pilus a single spike will be fine, we can just put more of the models together if needed. Ogre3D uses its own model format. Doing models works like this make model in blender (or import to blender, supports a lot of of formats) -> use blender to ogre exporter -> use ogre mesh tool to make it a binary. And then heavily tweak the barely adequate automatically generated .material file to select shaders etc. the model uses
No worries. I think this should be written down somewhere, I'll just paste it to my todo list for now

@OBPSG
Copy link
Contributor

OBPSG commented Sep 26, 2018

I can draw up some UML activity/sequence diagrams to help shed some light on the code generation for the ECS engine, and how systems keep records of components they use through nodes for faster reference.

@NicholasDM
Copy link

NicholasDM commented Feb 11, 2019

More documentation on working with the codebase and how the systems come together would be truly fantastic.

Commenting due to many months without update/resolution.

@hhyyrylainen hhyyrylainen removed this from the Release 0.4.1 milestone Mar 7, 2019
@hhyyrylainen hhyyrylainen removed the engine possibly engine related issue label Apr 17, 2020
@hhyyrylainen hhyyrylainen removed the easy label Oct 29, 2020
@hhyyrylainen hhyyrylainen changed the title Write a tutorial for working with thrive Write an introduction for working on thrive Oct 29, 2020
@hhyyrylainen hhyyrylainen changed the title Write an introduction for working on thrive Write an introduction for working on thrive (overall architecture introduction) Aug 22, 2023
@hhyyrylainen
Copy link
Member Author

I'm going to guess no one is ever going to want to write documentation. I did write a kind of ECS architecture documentation info that kind of fulfills this purpose but doesn't cover the overall architecture really (missing stuff like how stuff is split into folders).

@hhyyrylainen hhyyrylainen closed this as not planned Won't fix, can't repro, duplicate, stale Mar 24, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Archived in project
Development

No branches or pull requests

3 participants