Skycastle

Skycastle is an open source project creating a game engine for online multiplayer games, that gives players and world creators powerful in-game tools for creating content, and enables complex interactive world simulation. See the About page for more information.

Status
Skycastle is currently in initial development phase, and is not yet playable.

Contributors are welcomed, so if you are interested consider joining the effort.

See our Roadmap for an idea of where we are heading.

06 September, 2009 - Development Re-Started
Posted by zzorn

Skycastle has been on the back burner for some time, but recently I've started active development again.

The previous source base got kind of cluttered, with various half-finished components and ideas, so I'm taking the opportunity of rewriting the source in Scala, borrowing implementations from the old codebase where sensible.

I also moved the project from Sourceforge to Google Code, as I like the project page on Google Code much better - fast and user-friendly, with a lot of well designed features like the issue tracking system and the wiki backed up to the repository.

The new project page is http://code.google.com/p/skycastle/

I will also be moving the wiki content there, and moving skycastle.org to a blog platform to make it easier to follow.

06 April, 2008 - Signal Through!
Posted by zzorn

The last month I've been working on adding property and action support to GameObjects, as well as on a client and server that decode and encode messages, and apply them to their internal datamodel. Yesterday I finally got the maven build process sorted out so that it creates jars that contain all needed dependencies, and after fixing various small serialization issues we now have scripts for starting a client and server that send messages to each other.

I added instructions for running the client and server in the development environment, give it a try! It's tested on Linux for now, on the Windows side the .sh scripts just need to be converted to .bat files (straightforward).

For now, the server just sends the id of the clients account GameObject to the client. The chat functionality and 3D view that was in the earlier prototype server and client are not present.

The next steps on the server side is to start implementing POJO (plain old Java object) backed GameObjects, and implement an Account object that allows the user to list available games, and create and use avatars for them.

On the client side, the big missing part is the user interface. The server should be able to send UI layouts to the client that the client can then display and navigate in. The exact design will need to be evolved as we go.

Edit: Updated the Roadmap to reflect the current status and plans.

04 March, 2008 - Hacking away
Posted by zzorn

Just a quick update to let you know what has been happening recently.

Jae has been prototyping a metaserver, that should allow servers to upload arbitrary key-value pairs that clients or web application can use to compare and browse servers.

I've worked on various core functionality, with a bottom to top approach, of starting with low level layers and adding higher level layers on top of them.
 * Protocol negotiation is now implemented, this allows a server and client to decide on a protocol to use when they first connect
 * A protocol based on Java serialization has been implemented. The protocol encodes and decodes Messages from bytearrays.
 * Validity checking has been implemented for messages, to ensure that only a specific set of allowed classes can be transfered inside messages, to avoid various serialization attacks.
 * Messages for updating and modifying properties and actions in game objects have been implemented.
 * The GameObject has been simplified and reworked. At the moment the interface only has methods for properties and actions, but we will probably add concepts such as Ports later.  The property editing methods of the GameObject also have a 100% unit testing code coverage.

At the moment I'm working on the action system. It should support actions with some durations, which can be canceled.

After that it is probably time to switch the server and client over to use this new protocol and messaging stack, implement the chat server with GameObjects, and release the first version.

02 February, 2008 - Templates
Posted by zzorn

Added and briefly documented various templates, including templates that can be used to mark up features.

Also went through the entire wiki and did some cleanup, now most things should be up to date, and those that aren't (most notably Design) should be marked with the cleanup template and visible in the Cleanup Needed category.

01 February, 2008 - Creating a backlog
Posted by zzorn

I'm back again after the Christmas vacations and a busy spell at work.

Welcome to Assargadon who joined the team recently, and also helped me understand the importance of a low barrier of entry to the project.

Not much coding done yet this year, but we refactored the roadmap, splitting Features into own pages, and just listing the next and future features on the Roadmap. We will focus on making installation of both the client and server as easy as possible. The game will just feature a simple chat system in the next release.

I also moved moved the forum / mailing list archives into the main site, using the new embedding feature of Nabble. This frees us from having to maintain two skins on the website (and the Nabble version of the skin was always hard to get to work with all browsers, even the current website skin has some problems on less common ones).

24 November, 2007 - Dependency management and Domain modeling
Posted by zzorn

It's been a while since the last update, for various reasons. Now I'm back again, working on Skycastle a bit whenever I have time.

I uploaded the dependencies to our artifactory server, so now there is no need for running a shell script / bat file to install all dependencies to maven before compiling. This should make Compiling Sources be quite painless. You'll still have to configure the native dependencies if you are running the 3D client or the demo server, though. Eventually I hope to get around to documenting that better, and packaging the server and client in a way that makes them easier to run.

Currently I'm sketching out the domain objects needed for the 'final' Design, and writing some of the core interfaces to discover a good architecture for the system. The current state of the source is documented in Understanding The Source.

I have also been trying out test driven development on the machine component system, and it seems to work rather well (as long as we have a plan for the rough architecture). I'll try to add test for the rest of the code too, to bring our unit test coverage up to about 80-90% (although the large utility module might be a challenge).

20 September, 2007 - Client UI, Procedural Textures, Terrain Renderer
Posted by zzorn



Ionflux has been building a client UI, and we now have a chat window floating over a rotating 3D cube. This is good progress towards reaching our first milestone, which will still need a simple Sun Game Server based server and client implementation to allow chat, and ideally a Java Webstart enabled client deployment process.

I have been working on a procedural texture renderer and component graph view, as an initial type of content that should be possible to edit in an in-game component based content editor.

Next week I will be attending the FOSS4G conference, presenting my work on a 3D Map Renderer for GeoTools. The renderer will be used as a basis for the 3D landscape in Skycastle, although the ground will be rendered using pre-calculated textures instead of the current on-the-fly (slowly) rendered 2D map.

04 September, 2007 - Too early for Scala, Roadmap updates
Posted by zzorn

We decided to use Java as the main programming language for Skycastle, instead of Scala. We do like the Scala language, but the tools are still immature, the language is evolving, and it adds another learning barrier for getting involved with the project. We are tentatively keeping it as an alternative development language, although all common infrastructure and glue code should be written in Java to ease maintenance and learning.

We also had a long discussion today about scripting, content creation, and extending the server and client. Basically, we need a safe way to describe Designs created by players, as well as ways for players and game creators to add functionality to the game UI. We decided to pick Supporting Creation as our goal for the third Roadmap milestone, we will concretize it more as we get closer to it.

UPDATE: We now commented out the Scala compilation support from the build scripts, so Scala is no longer supported as an alternative development language.

01 September, 2007 - Building Infrastructure, Evaluating Darkstar, and Roadmap
Posted by zzorn

The past week we have been setting up our infrastructure, such as a forum front end for our mailing lists, irc log archives (thanks thelsdj!), and a continuous integration server.

We are also specifying things a bit in the Design section, although things are far from complete there yet.

On Thursday this week, Sun open sourced Project Darkstar, which is a server and middleware solution targeted at massive multiplayer games. We are investigating it as a possible solution for the server platform and communication layer (it still allows us to build our own game logic and client, just taking care of persistency, transactions, and communication). So far it looks promising - it could give us a large boost forward.

For the immediate future, we plan to implement a kind of technology demo or spike, with a Java Webstartable 3D client (just a chat window with a rotating box or something else simple 3D in the background) that allows connecting to a server and chatting to others.

Next we could maybe try to tackle the most difficult MMORPG feature, smooth and responsive movement - after that the rest is easy! ;-)

UPDATE: Wrote down the Roadmap as a wiki page.

25 August, 2007 - Starting up, design and hacking session in IRC!
Posted by zzorn

We'll be meeting later today at around 17 GMT in our IRC channel, to start working on the first phase of Skycastle - a basic chat server. Drop in if you happen to have some free time around then! If you miss this one out, you can probably catch the one next week - we'll be holding weekly meetings every Saturday at 19 GMT in our IRC Channel.

23 August, 2007 - Setting up the web/wiki site
Posted by zzorn

I decided to combine the website with a wiki, to make the website easy to update and the wiki easy to find. Bear with us while we get a bit of flesh on the bones for the website and wiki.

I moved the todo list for this site to Wiki TODO