For example, as an exercise to test the ability of code golf-style/APL/array programming languages to handle messy business logic, I recently built a 2D tick-based MMO in kdb+/q: https://github.com/srpeck/kchess
Note the design decisions/constraints that reduced development time:
- High programmer efficiency kdb+/q platform
- Simple client-server architecture
- All-on-one-box - kdb+ is both the front-end server and the datastore
- Websocket-based networking
- Tick-based - 1 second ticks to limit latency issues, though the server fully supports near-realtime ticks
- No differentiation between players and AI - both are networked clients (e.g., see here for the simple websocket client docs: https://github.com/srpeck/kchess/blob/gh-pages/docs/kchessdo...)
- No player identities (generally a commercial showstopper, but not for a side project)
- No 'content' - simple 2D graphics (though making the engine 3D would be trivial due to the vector paradigm), no progression/quests/RPG elements
Of course, there are the MMO pieces that generally increase development time:
- Game state cannot be globally fanned out given the sheer number of possible client connections (the first M - Massively)
- Untrusted players/clients
But once you have a simple, solid base engine, converting the result into an instance-based MOBA or a full MMORPG is not difficult, just time-consuming.