I want to write a game. So does EMW. So we're going to. We've been doing a lot of reading, researching and playing with technology since the last Fishcon and we're making progress. We're going to make a game that is a cross between Artemis, FTL and any realtime top-down shooter (like Alien Breed). Players work together to keep their ship alive while exploring and killing. It's going to run in Javascript in the browser (well, Chrome). We're using a whole bunch of libraries and new technologies, so there is a lot of learning. However, unlike the long abandoned Steampunk Pirates, we're cutting it up into more manageable chunks, the aim being to have something playable by the next Fishcon (random deadline!). This is really early days but we are making progress, which is more than we could have said for the last game we attempted!
Here's how it might pan out. We know we're doing Version One, I've just banged some ideas into V2 and V3.
Version One
Mulitplayer. One ship map. Aliens spawn at the airlocks. Run around the ship shooting the aliens (and each other).
Version Two
Writing the ship stations. Starting with engineering (a pipe mania minigame), then helm (local area combat like asteroids), the weapons (shooting from the space craft)
Version Three
Navigation station (Wider area map with places to explore) Strategy. More stations.
Want to join in?
It isn't fantastically easy to get stuck in, there is some fiddle. However, it is CHEAP! All the tools are free and because it is javascript, you get an instant feedback (no long compile process). You don't need to be an amazing developer to join in on the code. EMW and I wanted to get something together for feasibility before inviting others. I think we've proven feasibility, so if you're interested in having a play then you're most welcome! We will also need testers in the future, for which you'll need to get the environment running locally. That's not a mad amount of work.
This is an open invite to chums. I'm happy to teach friends how to program and get inside all the technologies below but not the whole world! You can also join in at some point in the future, when time and life plans allow. Ideas are welcome but we're not going to accept them all as scope creep will kill the project dead. It's got to be simple to start with. Although you can get the code running right now and see little boxes move around in the browser, I think it will be prudent to wait until I've finished refactoring the shit out of the code (we started with net code taken from an example) - which is going really well. Once refactored, the whole will seem less overwhelming.
Reading
Udacity course on HTML 5 game development (free, by Google Chrome team):
It's a reasonable course, some of the later lessons are a bit balls but it is worth a go. EMW has got through it further than I at the moment.
https://www.udacity.com/course/cs255
Tutorials on Build New Games
Lots of articles here, I'm still working through them.
http://buildnewgames.com/
The most interesting is: http://buildnewgames.com/real-time-multiplayer/
Which forms the base of our code at the moment. And is most interesting to me because the networking code is the most difficult bit of the whole game.
Javascript book: Crockford's Javascript the best parts. Best JS book ever. Honest and practical. Will take you from being able to hack bits together to designing neat, maintainable frameworks. Fine for beginners. Not essential.
http://www.amazon.co.uk/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742/ref=sr_1_1?ie=UTF8&qid=1364288662&sr=8-1
Node.js (simply called node)
It's the server technology we're using. Download version 0.9 (not the latest). Download, install and you can have a webserver up and running in about 15 minutes. Makes IIS look like a fat, bloated bastard. Because it is. Runs alongside IIS fine, although IIS will steal the usual ports (80, 8080 and 443).
http://nodejs.org/
Requirejs http://www.requirejs.org
To make our libraries remotely useable when large, we'll be organised using the Asynchronous Module Loader Requirejs. We're not going to use much of the Asyncness but for module definition and keeping track of references, it's brilliant.
Express
It's a library for node that takes some of the ceremony away from building a web server.
Express
Websockets
Rather than send HTTP requests over Ajax, websockets allow us to push from the server to the client.
http://www.html5rocks.com/en/tutorials/websockets/basics/
We'll not be doing that directly but instead using the Socket.io library to handle the details for us:
http://socket.io/
Other things to get into
GitHub
This is where our code is, get an account and download the Windows GitHub client. Bugs (Issues) will be put into GitHub so that fixes can be associated with the code commits. I'd recommend having a play with Git and reading up about it because it's not like TFS or Sourcesafe. You'll find me as brainwipe and EMW as evilmatt. Also Aggroboy and Big Rob are on too.
I've set up SSP as a private repository at the moment because there's nothing in there.
Trello
A list and work item manager. It's a nice simple tool for organising ourselves. Have a play on the welcome board that is created. Ideas, thoughts and transient tasks will go in here, GitHub should be used for the central core.
Comments
I probably wouldn't be able to help (partly as I haven't attempted any code for about 7-8 years now, and partly as I don't really have much time in the short/mid term spare. Stupid house move/work commitments!). My job is evolving into having as little to do with actual work as possible...
One query/suggestion. While playing Artemis, the one thing that screamed out to me is that it really, really would work with tablets. 1 big screen (Captains Screen), and all consoles on tablets... Artemis supports this (and Android is on the way). Minecraft has made an absolute killing on tablets (I know this is not started a financial project, however you can take financial success as an indicator of a suitable solution). Supporting this would also make playing/testing easier, as it's far simpler to get multiple people/tablets into a single location that multiple PC's/Laptops/screens.
Should a tablet environment be your initial goal? I don't know if the Chrome/HTML5 thing supports that or not.
(and yes, I would kill for a tablet-based FTL)
The tech works on chrome on my Galaxy Nexus and my Nexus 7. Making it good for these devices is down to controls and GUI tweaks. I imagine it would be best for additional screen, like Planetside2 has. Its not the initial goal because it adds a great layer of complexity.
This game is going to take years to complete, so there's plenty of time to get into it.
Oh, testing multi clients is easy as incognito windows have their own session.
One other reason for going with the 2d html5 route is that the art assets are easier to create we still have some work to do to define the code to use any assets but when that time comes the format will be likely jpg or png which is a bit more accessible than 3d art which takes a fair bit of work to learn.