Volity is designed to give you lots in freedom in what you make and how you make it, but by the same token it can be awfully confusing for a newcomer to know where to start. This page describes the
development environment that we recommend for Volity game programmers.
What you need to have
- Your favorite text editor (or editors), for all the code you'll be dealing with.
- You'll be working with the following sorts of files:
- Perl or Python code
- XML (SVG, to be specific)
- ECMAScript (a.k.a. JavaScript)
- We at the Volity project like and recommend [Emacs] as an all-purpose text editor.
- It comes with Perl and Java editing modes, the latter of which works great with ECMAScript.
- You can download and install [nXML-mode], a lightweight XML-editing mode that we like.
- An [Emacs mode for Python] is also available.
- Gamut, for connecting to the Volity network as a game player -- eventually you'll use this to play your own game!
- Testbench, for offline development of your game's UI file
- Not required, but useful, is the Squiggle graphical viewer (with DOM viewing support, which is handy for debugging). This is a part of [Batik].
- Software to develop your game module and run it as a parlor. Your choices include:
What you need to know
- Either the Perl or Python programming language, so that you can use one of the existing parlor frameworks.
- You could also set out to create your own framework in another language that you like more than these. But as this would involve implementing the entire parlor and referee protocols, it might be easier to program in Perl or Python instead.
- Basic principles of SVG. This is probably the trickiest part, since SVG is a relatively new technology, and there's not a ton of good reference material on it. We recommend:
- Jmac read before starting to design Volity as we know it today. It includes a summary of scripting SVG with ECMAScript, which is key to creating Volity UI files.
- Working knowledge of ECMAScript.
- An understanding of the DOM?, and how you can use ECMAScript to manipulate SVG.