Monday, December 24, 2012

Map Editor updates

Last two weeks I've spent quite some time on improving the map editor. Some noteworthy improvements from the last two weeks:

  • I've swapped out KineticJS to use FabricJS instead. FabricJS turned out a little harder to integrate than Kinetic, but it's giving me some real advantages:
    • Export to SVG - you can export your complete maps to SVG now
    • Built-in selection support - I will exploit this further in the future
    • Nicer positioning (items are positioned by center rather than top left corner) - this made it a lot easier for me to implement displaying room names on the map, for example
  • Performance has been drastically improved. Zooming, changing perspective, all are now fine, even with 10,000+ rooms. Only the initial loading may still be slow.
  • Support for Areas. You can easily choose which areas are visible and which are not. Especially useful with areas that (partially) overlap.
  • Z-level filtering. Designing a skyscraper or a cave with multiple floors? Using z-level filtering you can filter out anything not on the current floor so you regain oversight.

Monday, December 17, 2012

PlainText engine going into beta

Hey all, welcome to the new PlainText blog. I'll start with the announcement I sent out last week :)

After many months of refactorings and heavy lifting, my engine PlainText is going into beta. What I mean by this is that the amount of changes to the core engine are expected to slow down from this point, and focus will shift toward fixing bugs, doing high-level work like improving the map editor, and working toward my own game which I may announce at a later date when there's something more concrete to show :)

The main distinctive features of PlainText are:

  • Game events that propagate through multiple rooms. Hear sounds and see visuals as they happen in nearby rooms. Sounds and visuals lose strength and become increasingly blurry over distance and we use a semi-realistic line-of-sight algorithm to determine what you can see and what not. Currently we are just scraping the surface with this, but already it creates a much more immersive, rich and lively game world.
  • Extensibility is provided through JavaScript. Whether it's triggers or other methods for extending game objects, the combat system, session handling, or implementing commands, all can be done with nothing but JavaScript knowledge.
  • HTML5 map editor makes life easy for builders. This is one of the areas that will see a lot of attention during the coming months.
  • High-performance multi-threading C++ core, designed for minimal latency. There's no database involved. While this is a continuous effort, the goal is to be able to contain a game world with about 1,000,000 rooms in memory on a server with 4GB RAM, and to be able to handle potentially hundreds (at least) of concurrent users.

If anyone is interested in building a MUD using the PlainText engine, you might be interested in these resources:

Project page:
https://github.com/arendjr/PlainText

Documentation:
https://github.com/arendjr/PlainText/wiki

Forums:
https://groups.google.com/forum/?fromgroups#!forum/plaintext-core
https://groups.google.com/forum/?fromgroups#!forum/plaintext-gameplay
https://groups.google.com/forum/?fromgroups#!forum/plaintext-tooling

Demo server:
http://mud.yunocloud.com:8080/
(use port 4801 if you want to connect with telnet)