An entity and spell system c++ godot engine module, for complex (optionally multiplayer) RPGs.
Go to file
2019-12-01 23:19:54 +01:00
atlases Added CharacterAtlas, and CharacterAtlasEntry. 2019-08-24 19:44:04 +02:00
autoloads Now the data manger loads Skills, and EntityResources. Also removed the list methods. 2019-12-01 23:19:54 +01:00
data Moved the EntityDataManager into a new autoloads subfolder. 2019-12-01 22:56:53 +01:00
drag_and_drop Implemented Equipping. 2019-11-04 21:00:17 +01:00
entities Moved the EntityDataManager into a new autoloads subfolder. 2019-12-01 22:56:53 +01:00
formations Work on AI. 2019-10-31 01:35:29 +01:00
infos Improved the design a bit, implemented serializing SpellDamageInfo, and SpellHealInfo. Also fixed a crash. 2019-10-29 18:12:15 +01:00
inventory Fixed sending item count changes to the client. Also added the stack_size_changed signal to ItemInstance. 2019-11-29 10:16:59 +01:00
loot Added the missing get_loot binding into LootDataBase. 2019-10-02 11:43:36 +02:00
meshes Build fix on linux. 2019-07-19 20:54:57 +02:00
pipelines Improved the design a bit, implemented serializing SpellDamageInfo, and SpellHealInfo. Also fixed a crash. 2019-10-29 18:12:15 +01:00
profile_manager Now entities have an action bar profile aswell. Also fixed small deserialization issues. 2019-10-14 19:49:40 +02:00
skeleton now the text_name properties use resource's resource_name property to store data. 2019-11-09 17:49:05 +01:00
ui First Commit. 2019-04-20 14:02:55 +02:00
utility Property style cleanup, and added an entity name changed signal. 2019-09-17 15:35:03 +02:00
world_spells Moved in-world spell related classes into a different folder. 2019-12-01 21:21:51 +01:00
.gitignore Added a new CharacterSkeleton class. 2019-05-01 02:49:06 +02:00
config.py First Commit. 2019-04-20 14:02:55 +02:00
config.pyc The bag is now scriptable. 2019-08-14 15:52:23 +02:00
entity_enums.cpp Added EntityResourceCostData, also more refactorings. 2019-11-30 21:04:35 +01:00
entity_enums.h Added EntityResourceCostData, also more refactorings. 2019-11-30 21:04:35 +01:00
item_enums.cpp Started implementing switchable equipment. 2019-10-24 22:06:47 +02:00
item_enums.h Refactored the way the server can open windows. Also they work with networking now. 2019-11-04 23:05:45 +01:00
LICENSE The module is using the MIT license now. 2019-11-21 22:53:52 +01:00
README.md Added info on how to compile ess for 2D. 2019-11-27 11:28:09 +01:00
register_types.cpp Added ESSPhysicsQuery autoload's skeleton. It's purpose is so spell can request raycasts, and this will execute them in physics_process. 2019-12-01 23:05:06 +01:00
register_types.h First Commit. 2019-04-20 14:02:55 +02:00
SCsub Added ESSPhysicsQuery autoload's skeleton. It's purpose is so spell can request raycasts, and this will execute them in physics_process. 2019-12-01 23:05:06 +01:00
spell_enums.cpp Added a few spell and aura arrays to ItemTemplate, added a new enum, and fixed compile. 2019-09-12 22:45:29 +02:00
spell_enums.h Added a few spell and aura arrays to ItemTemplate, added a new enum, and fixed compile. 2019-09-12 22:45:29 +02:00

Entity Spell System

An entity and spell system for the GODOT Engine.

Be warned! API breakages still happen a lot, only use this module, if that's okay with you!

The actual player, mob etc implementations are still in the main game's repository. (As GDScript) Also there is a data editor addon for this module. The main game should have it.

This module have dependencies to some of my other engine modules, these will be made optional later, for now you will need to install them as well.

The main class that can be used for players/mobs is Entity. I ended up merging subclass functionality into it, because that way it gains a lot more utility, by sacrificing only a small amount of memory.

For example this way it is easy to make chests attack the player, or make spell that animate objects.

Spell is the class you need to create spells, it stores the data, and also it has the ability to be scripted.

Aura is also built the same way.

The module provides a huge number of script callbacks, usually as vmethods.

The main data class is EntityData. You will need this to properly initialize an entity.

The module can do multiplayer, but it's not finished, and at the moment not safe to use. It should mostly work though. Also it supports entity visibility. If you need rpcs that use this, use vrpc. (Implemented inside Entity).

Every variable is broken up into clientside, and serverside ones, when applicable. This makes it easy to develop games, that can also run locally, with less overhead. And simpler logic. E.g. this makes it easy to use the visibility system even on the server, because you just use the clientside variables, and the logic will work the same way.

Right now everything wokrs authoritatively, except for movement. FYI Movement is handled in GDScript int the game's repo right now. (I plan to implement authoritative movement later.)

Everything is called the remotesync way, but instead of remotesync, I have c++ macros, which sends the rpc, and then calls the given function directly aswell.

For usage check the main game's repo.

2D games

At the moment I`m only focusing on 3D, it might not copile at all like this, if you run into any problems feel free to open an issue, or a pr.

The modules uses 3D by default, however it can be compiled to work with 2D games, you need to add entities_2d=yes to your scons command.

For example

scons -j2 platform=x11 target=release_debug entities_2d=yes