Difference between revisions of "Tuto tiny-ecs demo Part 10 Conclusion"
(2 intermediate revisions by the same user not shown) | |||
Line 51: | Line 51: | ||
'''I hope you like the demo'''! | '''I hope you like the demo'''! | ||
+ | |||
+ | == Gideros Project == | ||
+ | In the project I added an '''SDebugDraw''' system. | ||
+ | |||
+ | '''[[Media:tiny-ecs_demo.zip]]''' '''(tip: right click and save link as)''' | ||
== Conclusion == | == Conclusion == | ||
Line 60: | Line 65: | ||
* components can serve as ids | * components can serve as ids | ||
* a system filters the entities to act upon based on entities ids | * a system filters the entities to act upon based on entities ids | ||
− | * a system can | + | * a system can run once or every update |
+ | |||
+ | '''I really enjoy making games using the ECS paradigm. I hope to have given you the keys to experiment with it'''! | ||
− | |||
'''Thanks for reading'''! | '''Thanks for reading'''! | ||
− | == | + | == Further reading == |
+ | One last link if you want to know more about ECS: | ||
+ | '''[https://github.com/SanderMertens/ecs-faq#what-is-ecs github SanderMertens what is ecs]''' | ||
Latest revision as of 14:29, 22 December 2023
So this is the last chapter.
Adding Buildings
Let's finish the tiny-ecs demo by adding some buildings to our level1.
In the entities folder "_E", let's add a file called "eBuilding.lua" for example.
This is the code for an EBuilding entity:
EBuilding = Core.class()
function EBuilding:init(xspritelayer, x, y, w, h)
-- sprite
self.spritelayer = xspritelayer
self.sprite = Pixel.new(math.random(0xffffff), 1, w, h)
self.sprite:setAnchorPoint(0.5, 1)
-- params
self.x = x
self.y = y
end
The only thing here is to change the anchor point of the EBuilding entity.
Now in the "LevelX.lua" file we add some buildings to tiny-ecs world:
-- ...
-- tiny-ecs
if self.tiny == nil then
self.tiny = require "classes/tiny-ecs"
end
self.tiny.tworld = self.tiny.world()
-- some deco (xspritelayer, x, y, w, h)
for i = 1, 8 do -- 8 random buildings
self.tiny.tworld:addEntity(
EBuilding.new(self.camera,
math.random(myappwidth), 14*16,
math.random(4*16, myappwidth/4), math.random(8, 12)*16
)
)
end
-- some enemies (xspritelayer, x, y, dx, dy)
local nmes = {}
for i = 1, 10 do -- we create 10 enemies
-- ...
We add 8 randomly positionned and sized EBuilding entities.
I hope you like the demo!
Gideros Project
In the project I added an SDebugDraw system.
Media:tiny-ecs_demo.zip (tip: right click and save link as)
Conclusion
This was my take on using tiny-ecs. To sum up:
- tiny-ecs has a world
- a world is made of entities and systems
- entities have ids
- entities can have components
- components can serve as ids
- a system filters the entities to act upon based on entities ids
- a system can run once or every update
I really enjoy making games using the ECS paradigm. I hope to have given you the keys to experiment with it!
Thanks for reading!
Further reading
One last link if you want to know more about ECS:
github SanderMertens what is ecs
Prev.: Tuto tiny-ecs demo Part 9 Player Shoots Enemies Die
END