Amalgam Engine 1.2 Release Notes
Live Lua scripting, Interactions, Behaviors (AI, etc)
Non-client entities now can accept an "initialization script": a Lua script that gets ran when they're constructed.
The init script interface features Interactions (things that happen when you click on the entity, e.g. "Examine") and Behaviors (things that happen automatically, e.g. AI).
Lua bindings are mostly left up to the project, but should follow the concepts of "Interactions" and "Behaviors".
Automatic Entity Component Networking
In C++, there are now two lists of component types: ReplicatedComponentTypes, and ObservedComponentTypes.
Adding types to these lists cause them to be automatically networked with clients, meaning it's now trivially easy to add new components. There's a slight performance penalty to using this path, so performance-sensitive systems such as movement will still handle their components manually.
Behind-the-scenes Improvements
- Refactored movement for another large performance boost. We now can easily support 200 entities in 1 area, moving at 4 inputs/second. We can probably go even higher, I haven't tried yet.
- Refactored entity handling to support non-client entities (this update is our first time dealing with any entities that don't belong to a client).
- Added messages to handle changing an entity's name and sprite, with project hooks for allowing/rejecting the change. This lets a project's build mode send already-hooked-up messages for the entity data that it's likely to support changing in the UI.