Skip to content
This repository has been archived by the owner on Mar 14, 2020. It is now read-only.

Roadmap

hjnilsson edited this page Aug 3, 2012 · 7 revisions

Getting master useable

Version 0.7.0

  • 9.60 support

    • Update ProtocolGame / protocolLogin so connecting using that client and moving around does not give any errors.
    • Add Market.
    • Move monsters from legacy to trunk.
    • Move items from legacy to trunk.
  • Add OnTimerEvent

    • Would allow to schedule actions in the future without keeping the current event thread alive (as wait) does.

    • Proposed solution: Add a new queue to ScriptManager with <microtime, Listener_ptr>, check this at the same time as timer event and dispatch any that have run out. Register function should be registerTimerEvent(1000, handler [, repeating]).

  • Update IO code to match new database schema.

    • Currently, the server is not up-to-date with the new database structure.
  • Improve NPC system so order of conversations is intuitive (right now, since it uses table keys, the priority of phrases essentially random).

  • Add a simple quest system module that allows levers, switches etc. to be configured easily.

  • Update to Lua 5.2

  • Rewrite event scheduler so new coroutines are only spawned if necessary.

    This would allow using LuaJIT (which is now impossible since spawning 1000s of hardware thread per second is not viable).

    This would be implemented by keeping a pool of coroutines available for event handling. Each coroutine would have a root function akin to:

      function thread_root()
          while true
              handler, event = coroutine.yield('READY')
              handler(event)
          end
      end
    

    Then check for the READY (or WAIT) code in source and adding the coroutine to the appropriate pool.

Future goals

  • Add simple HTTP server to serve JSON request for server status.

  • Improve the administration interface.

  • Better logging support using boost::log rather than std::cout. Allow redirection to an output file, color for different log levels. Implement native logging like Windows Events and Syslog.

  • Incremental saving.

    • When players log out, keep them in memory, save everything at the same time (every 30s?) and the flush out players etc.

    • Flag tiles / containers / items / players as dirty when they are changed, so we don't have to save EVERYTHING every single save.

  • Client Version selection server side (support everything 7.4..9.6+).

Clone this wiki locally