GithubHelp home page GithubHelp logo

gomud's People

Contributors

rob05c avatar

Watchers

 avatar  avatar

Forkers

guozanhua

gomud's Issues

websocket interface

This is something I really, really want to add, but it will only be a high priority after other basic functionality exists.

persistence

Implement persistence of dynamic data (e.g. rooms, players).

Probably via sqlite3.

improve telnet handling

Currently, telnet commands are sent when 3 codes are received. This is insufficient and brittle.

Listeners should forward all telnet command codes to a telnet manager for that connection. The manager should buffer command bytes until a complete command is received, or a new IAC is received.

The telnet manager should also be able to take over listening to handle advanced telnet options which involve messages without the command bit set. Alternatively, the telnet manager could be able to request non-command bytes.

Due to concurrency, the listener may process necessary non-command bytes before it receives the divert message from the telnet manager. Because of this, the manager may not be able to run concurrently with the listener.

Messages sent to clients must also go through a telnet handler. E.g. compression, encryption.

Sanitize player input

Special characters should be disallowed. Character names should only allow alphabetic characters.

Any other input, such as communication, should remove special characters, such as backspaces and bell characters.

Sanitized input must still be sufficient for admin script commands.

character names now only allow alphabetic characters

Note because of NPC scripting, input, at least from users who can create (admins?), must allow all characters necessary for writing javascript.

help system

An in-game help system. This ultimately needs to be a navigable hierarchy of files.

Ideally, commands/classes/subjects will auto-generate help files. E.g. when a new command is created, part of that command's structure includes usage help text.

However, a single command listing available commands and their usage will suffice for the current small command set. YAGNI applies.

A help command now exists.

This case will remain open until a complete system exists.

The current commands and such are far too primitive to need a complete system yet. Therefore, this case's priority will be reduced until such complexity exists.

configuration files

Implement configuration files

Current config settings needed:
port
cryptographic hash algorithm?

preferred Telnet Encryption algorithm?

Non-Player Characters

Add NPCs.

NPCs should:

  • be in rooms
  • be able to own items
  • be dynamically scriptable

Dynamic scripting allows all sorts of other dynamic things, such as aggro, attacking players, picking up items, saying quest lines, giving players items in response to quest events.

NPCs can be created now via the createnpc command. However, they currently differ from items only in that they can't be picked up.

NPCs are now scriptable.

Advanced item interaction

Items should have advanced interaction commands. Examples include: ring, shake, open, close, poke, throw.

These would require custom functions for each individual item. These functions should probably be dynamic, e.g. Python, so object interactions can be created by admins in-game, rather than requiring a developer, a recompile, and a restart.

implement logging off

Players must be able to log off. This should be doable via a command (quit), as well as automatically by the server when a connection is forcibly terminated.

Currently, there is no framework in place to manage players which exist but are not "logged in." Possible solutions:

  • Delete players from memory structures. Players are loaded from the database upon connection.
  • Store players in a separate "disconnected players" structure
  • Store players in the same structure, with a "disconnected" flag

I am leaning towards the first option. If there are ever a large number of players, storing all existing disconnected players in memory will be expensive.

Storing players in the same structure seems bug-prone. It would be easy for a routine to fail to check the disconnected flag.

Persistence (i.e. a database) is yet to be implemented. It must be implemented first for the first option.

Wiki install details for go-v8 on major operating systems

The Wiki install page should have detailed instructions for Ubuntu, Windows, and OS X. Specifically, the go-v8 installation instructions need more details.

Implementing this will require attempting to install and run gomud on clean installs of these operating systems, and recording the exact steps performed.

mccp

Implement MCCP (Mud Client Compression Protocol)
http://www.mudbytes.net/index.php?a=articles&s=mccp

This has the rfc label because, while not actually an RFC, it is similar in style and scope to the rfc issues.

Note this is not high priority, because with modern internet speeds, compression generally actually slows down a connection. However, we should implement it for users who sit in Siberia and have only telnet.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.