--- tags: inexor --- # Inexor Mumble Meeting Q2 / 16. August 2018 ## References Modular system requirements: https://dynalist.io/d/CduEdvzKUeA3kldsKG3vZv1u Inexor features: https://dynalist.io/d/-OOUYb0xZouzfFF72zlrNjOw Issue: https://github.com/inexorgame/inexor-core/issues/604 ## Topics - Hackathon - Have a look at the thoughts we brought together about the module system - Technical review - how to progress from now on? - How to integrate existing code (entity system) - Decide for a module interface - Create a preliminary roadmap for next steps - Assign primary maintainers for next topics - Next meeting Agenda - **bonus:** Document the specification progress The meeting starts at 9pm (MESZ) on `nooblounge.net`. Currently the following attendees have noted interest: - ~~@Fohlen~~ - @Hanack - @a_teammate - @Hanni - @nothing - @Misan ## Hackathon Poll: https://doodle.com/poll/3wx2k6upykdgqd2u Todo: - [ ] create an issue about location, date @Misan - [ ] Write an agenda for the hackathon @a-teammate - [ ] Write a blog post @Hanni How much does con-fee cost? How many can stay? T-shirt press @misans home (Bring materials! Who? Same day?) ## Have a look at the thoughts we brought together about the module system #### Problem 1: separation between modules [Google fruit](https://github.com/google/fruit/wiki) (a dependency injection framework) allows to define seams between modules better. #### Problem 2: dynamic loading of plugins [Boost DLL](https://www.boost.org/doc/libs/1_64_0/doc/html/boost_dll.html) or [magnum corrade](http://doc.magnum.graphics/corrade/plugin-management.html) offer that. The plugin's dependency chain must be loaded. Could accellarate the C++ development (hot reload of functionality: don't stop the system, but compile and see it in effect immediately) ### Notes **How to integrate Module Lifecycle with Modules?** start/stop can modules integrate their own events/lifecycle that other modules can hook into? **How to hook into existing modules?** Modules need to be encapsulated - they can hook into other modules lifecycles and functions. Eventsystem could be integrated **How do I extend the core modules or add modules without forking the entire sourcecode?** For now, it is just for internal organization - we do not want to send DLLs or make others abuse the source code. We should make the core as extensible, as possible, to allow most of the content creation from the get-go. ### Technical review - how to progress from now on? There were some preparations going on We already collected a bit of feedback @a_teammmate will together with @hanack start with the module system - core - dependency injection - RPC module - hello world module ### How to integrate existing code (entity system) #### feedback for entity system Sauerbraten is very flat in how entities are organized. It would be nice to build on top of other entities. So if a jumppad consists of - model - sound - velocity vector transformation new entities can build on top of these entity groups How is that system documented and specified? https://github.com/inexorgame/inexor-core/wiki/Entity-System ### Decide for a module interface that is open for extension A module consist of a C++ and/or a nodejs module. The [tree](https://github.com/inexorgame/inexor-core/wiki/Inexor-Tree) is the (only) interface to communicate with the C++ side. Each C++ module should also have a nodejs module that represents the methods related to that module. Core takes care of performance-intense tasks Flex is for data aggregation, transformation, scripting. - faster to learn - flexible to extend - a better language to do common management tasks **Module system on flex site is missing.** Can [bottle.js](https://github.com/young-steveo/bottlejs) help? Or another DI framework? Or is that needed? ## Assign primary maintainers for topics - [ ] Module system @a_teammate @hanack - [ ] Plugins - [ ] Core - [ ] Geometry/Octree - [ ] Texture Engine - [ ] Entities @hanni - [ ] Sound - [ ] Synchronized Data Tree - Client - [ ] Physics - [ ] Lighting - [ ] Models - [ ] Rendering - [ ] Visual Scripting System - [ ] Next steps - [ ] Rolling Release / Game Content Distribution - [ ] Flex Module system @Misan - [ ] Versioning (Octree, Sounds, etc) - [ ] Weapons/Tools - [ ] Multiplayer Content Collaboration - [ ] Game Modes - [ ] User Interface @Misan - [ ] Specification process ## Next Meeting (**Tuesday** 28.8.18) Agenda - What has been done?