hjaremko / asciinem Goto Github PK
View Code? Open in Web Editor NEWDynamic terminal MMO RPG
License: MIT License
Dynamic terminal MMO RPG
License: MIT License
Network module facade is a simple interface exposing module's services.
Steps:
asio
implementations of the submodulesSuggested interface:
class network {
virtual auto poll_message() -> types::msg = 0;
virtual void queue_message(const types::msg&) = 0;
}
Instead of sending XML data and looking for EOF char, send size of serialized data first
Make use of async asio, use websockets and make it "sync, then stream".
Connection manager manages current connected players.
It should poll all connected clients according to the clock
and push received data to the message_queue
. It should also remove disconnected players from the list.
Done:
Implement server clock using Observer pattern.
Clock should run in separate thread notify all subscribers of a new tick id at fixed intervals.
Suggested interfaces:
class clock
{
virtual void next_tick() /* notify */ = 0;
virtual void attach(clock_observer) = 0;
virtual void detach(clock_observer) = 0;
};
next_tick()
{
for each observer in observers {
observer->update();
}
}
class clock_observer
{
virtual auto update() -> types::tick_id;
/* update function invokes function that should run on next tick */
};
Add CI step to Verify
workflow that will enforce proper code formatting
Using Bridge design pattern add database connection interface and implement it using SQLite.
Interface should provide method to execute SQL query (including select
queries).
Should provide basic queue functionality and contain objects of type types::msg
.
The queue should be thread safe.
Steps:
std::deque
, keep in mind that this queue could be converted into priority queue in the futureSuggested interface:
class message_queue
{
virtual auto poll() -> types::msg = 0;
virtual auto push(const types::msg&) = 0;
};
Some header still can be split up to .hpp and .cpp files
Listener should work in the background and collect new incoming connections. They should be delegated to the connection_manager
submodule for further handling.
Steps:
asio
implementationA declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.