nengi.js Roadmap
Items with a star(â) are on my TODO list. See the key at the bottom.
This is a non-exhaustive collection of proposed nengi features, game templates, tutorials, and peripheral software items. These items come from a much larger (400+ item) list that I maintain privately, as well as community feature requests. I will eventually move all of this to something more public and editable like trello.
nengi core
- ð toggle historian to enable mutliple thousands of entities (quickfix)
- ððša 3D view culler
- ððšSpatial Channel API - allows for different types of spaces to exist in one game (2d, 3d, custom) with more than one culling strategy.
- ð Entity enhancement: no more x,y required.
- ðĶ Entity enhancement: arrays. Entity protocols can now contain arrays that somehow stay in sync when changed.
- ðĶ Entity enhancement: nested entities. Entities can contain other entities, paving the way for ECS designs.
- ð LocalMesssages go away and the same functionality is added to messages.
- ð Simplified nengiConfig: protocol subtypes go away (entity, message, localMessage, etc) and everything is just a protocol.
- âððš Granular Historian - history can be enabled on a per entity (or per entity type?) basis instead of being fully on or off.
- ðĶ multi-connect - add the ability for a nengi client to connect to multiple instances at the same time
- ðĶ server seams+stitching - add the ability to create continuous worlds out of multiple instances
- ð bytes not bits situational performance enhancement - offer the option to switch from bitbuffer to buffers and have all types smaller than 1 byte automatically occupy 1 byte (may improve cpu usage at expense of bandwidth)
- ð one view situational performance enhancement - offer the option to fully disable view culling and send the same binary snapshot to all clients (exception: the first frame a client connects is unique, as snapshots are deltas)
nengi tutorials/documentation
- âðŠðŠðŠMy First Nengi Game - a YouTube series building a game with PIXI.js
- installation and intro
- template tour
- modifying an entity
- creating a new entity
- adding ai to an entity
- adding a projectile
- serverside colisions with SAT.js
- keeping score and networking w/ messages
- ðŠðŠnengi: implementing lag compensation (YouTube) step-by-step refactoring of a server-only networking model to the same game with prediction and lag compensation. This video is intend an aid in understanding advanced network programming, not as an actual tutorial for implementing it -- it would be easier just to start with a template that already has advanced netcode.
- ðVPS Deployment - youtube and file listing commands. Covers a simple (root account, no nginx) deployment of a nengi game onto a vps.
- ððĪ·Clientside Vuex+Vuejs integration (YouTube + code sample) discussion of the implementation and benefits of a pseudo functional flux pattern being added to a game client for game logic or (mainly) for having a reactive dom-based ui
nengi game templates/services
- âðbarebones - port the old barebones demo to nengi 1.0.0
- âðŠðŠ2d shooter with lag compensation - demo game/template showing the full suite of advanced lag comp features in a 2d pixi game
- ðŠðŠ3d shooter with lag compensation in babylon - demo game/template showing the full suite of advanced lag comp features applied to a moving cube in Babylon.js' null engine.
- ðŠMaster Server - release a node/tls service that behaves as master server for running game instances.
- ðSimple Matchmaker - a demo script that consumes data from a master server and chooses an instance for a player to connect to.
- ðGlobal Latency System - a service that can be deployed to numerous data centers and queried to return the optimal region to connect to.
Key
Denotes feasibility and other little notes about an item.
- ThumbsUp ð - pretty confident, and time needed is reasonable
- Flex ðŠ - can be done, but is going to be heavy work
- Notebook ð - R&D required, can't say for sure how it would work
- Unicorn ðĶ - theorycraft (like R&D required, but worse)
- Apple ð - "low-hanging fruit" usually means I have this essentially done already (but requires polish)
- Shrug ðĪ· - maybe no one wants this
- Delta ðš - causes significant api changes