Now i’m not a Web developer by any stretch of the imagination, having worked mostly with PHP and doing stuff against the database. The last time I touched HTML proper it didn’t have style sheets and was simply a mark up language. I am strictly going to go about rating how ready HTML5 is by a game developers perspective. The other criteria is that is should be free (or free as beer at least).
With those conditions, the only engine which seem both actively developed and well…free was RenderEngine. It’s active and the sole author Brett Fattori knows what he’s doing. Unfortunately I wish the browser developers knew what they were doing. Chrome is currently the fastest HTML5 browser, FireFox is a good second. The new ‘fast rollout’ of browser tech is making it hard to pin down a target for HTML5. V2 of RenderEngine (which is still in development) works best with Chrome and breaks on Firefox 4.
So you development environment would be:
- FireFox with Fire-Bug (until you find a feature which breaks) then…
- You need to know some JQUERY to get anywhere. It was a bit confusing until did some JQUERY stuff then it was fairly easy.
With that said, HTML5 won’t be on my direct development pipeline for a while. Might spend some time on weekends playing with it but that its. You can follow my development of a HTML5 RPG editor(Adventure) @ http://www.bigbadrobots.com/adventure/adventure/editor/
It currently doesn’t do much but sit there..the tile engine running in the background (pretty sea;P)
We got our first concept art today from Ivan, an artist we are working with on Wendy’s Weddings, a wedding themed casual title. He does some nice work as you can see with his first pass at some concept on some of Wendy and her little sister Molly.
You can take a look at more of his stuff at synergylab.com.my. We are still working on the characters so the are by no means final. Running comments on Wendy being a little too bossy looking have been noted and we are working on making her more fashionable and friendly.
The game revolves around helping Wendy build her Wedding Business and is being developed with assistance from Pretty In White. We have only been developing the game for about 2 weeks in total, but the basic gameplay is there and we are finishing off the Game Design documents before moving fully into production. Jordan from Zombie Gecko is helping with the Game Design. Still pretty early but the design and gameplay look exciting and we talk more about it in the future.
Our target is primarily on iOS and Mac as we are using the Cocos2D game framework. I have written in the past how I built a ‘component’ based system around this framework.
I know my 3 sisters and 2 nieces will be so happy I am finally making a game they will like to play. Maybe I can sneak in alien secret character;P
This post is a follow up to my first one which gives you some concepts on working with networking. In this post, I will cover getting an a client/server connection going which is the first thing you have to do in building a multiplayer game. Your first point of reference is to make sure you are familiar with the Unity3D Network class which provide most the functionality you need to manage an initial network session.
I would like to cover some Unity3D specific topics on how networking is handled. Unity uses a Network View Component that is attached to every game object who’s state you want to synchronize with. It also allows you to send messages directly to those objects because each one is issued a network ID. The following picture should make things clearer:
Let’s also cover the ‘responsibilities’ in networking between the Client and Server.
- The Server’s primary responsibility is managing the network session and propagating/validating state changes to connecting clients. It is also responsible for control of non-player game objects(i.e. enemies) by creating them when needed, running the AI routines which tell them to move. There are 2 modes that the server can operate under, authoritative and non. Authoritative servers have more work because they have to validate state changes from the client rather than merely passing it along to other clients. This is usually a slower way to operate as each move, action needs to be checked. If found to be invalid then the client that sent this original state changes need to be ‘brought in line’ with the way the server is thinking. A non-authoritative server on the other hand is more of a delivery person who simply relies information over to connected clients
- The Client is responsible for the view of the world a player sees and for receiving input and forwarding it over to the server. In a non-authoritative mode, the client can also process game logic (i.e. decrease health, move the player, move other objects) and these are sent to the server to be relayed to the other clients.
The first step in getting a network session up and running is initialize a server, which should be done when a level in the game loads up. This is done using the method on the Network class called “IntializeServer“. The first parameter is the number of connections to take. The second the listening port for the server, which is used by the clients to determine which application to connect on the server (as a server may be running multiple network applications). The last parameter if Network Address Translation should be used or not. All these except for the number of connections should be eventually made user configurable when you are writing your game.
Once the server is running, clients can connect using the Network.Connect method. The most important parameters for now is the ip address of the server and the remote port(which was the listening port specified earlier when the server was initialized).
That’s pretty much all there is for setting up a session. Be sure to check the Network class for more information on how to handle disconnects and network failures.
I have set about learning about networking on Unity3D in order to implement multiplayer support for Zombie Gecko’s Comrade In Arms. I have a fair amount of experience with networking, having first cut my teeth writing real-time transactional system allowing Unix hosts to update banking details to a IBM Mainframe using XNA, then working on early Internet credit card authorizations system and finally developing the server/networking code for Fung Wan Online MMOG. Well enough about me ;P
Unity3D uses RakNet for standard networking and who ever is implementing things will have a lot of plumbing to take care of inorder to get things working. Unity uses a “Networking View” component which must be attached to all objects which in turn Network State Synchronization and Remote Procedure Calls(RPC’s) to occur. You can set specific spatial components to be observed by a network view but usually you will implement a script that will pre/post process network information sent. This was something I missed when I first started out tinkering with networking on Unity
Let’s go back a bit and talk about the 2 different methods of communicating in Unity:
- State synchronization - this is basically a method of setting the network view to observe a script component that processes changes in states that can be sent to the server which in turn are transmitted to all listening clients.
- Remote Procedure Calls – This is a common enough networking concept that allows you send invoke functions on the server or all clients with parameters being passed.
You can do some additional reading on networking by looking up the following resource:
- Unity documentation
- iPhone Multiplayer demo – still works and you can substitute a web view for an iphone
- Unity Networking Example – Still works on Unity 3.3
- M2H networking tutorials – It cost money now, but there was a simple network tutorial that is floating around the network.
In a follow up posting, I will go through making connections,extrapolation,interpolation and hooking RigidBody objects.
After a fair brief stint of working on a Native Objective C App (A Non-Game…Shock and Horror), I am finally back to working on games. The 2 or so months I spent ‘learning’ Objective C was actually a nice break from normal development and gave me a greater sense of confidence in being able to add/extend functionality when need to on iOS devices. Prior to that I was very much looking at things purely from a C++ point of view and trying to ‘avoid’ using any Objective C.
The best big of strangeness was making sure I got my head wrapped around Objective C memory management. With C++ it was new/delete and life was easy or you could use Boost to smart ptrs and so on. With Objective C, I couldn’t figure out why my memory was going out of scope (Oh you do a retain), the way it handles private instance variables and a hours of going “Oh that’s what you want me to do”.
Now i’m back to Game Development, I am using Cocos2D for development. The biggest reason is to keep the footprint small because I am looking at how games instead of strictly always running stand alone can be packaged with other Non-Game Apps.
What I learnt from Last Call, is that there is just too many games out there on the iTunes. They are all fighting for space and customers simply don’t have the time to try them all. With this is mind (and being the new year and all), I thought a more prudent approach was to look at what customers are interested in first of all. You know real people, you want to reach with your games. For example interests such as food, fashion, cars, sports etc all need Apps done. With In-App purchase you could package a game with a clothing theme in a Fashion App.
Well that’s what I think anyways. I’ll let you know how this new company strategy when the Apps come out.
Game development is a lot of work, more so if you are the designer, programmer and sometimes artist on your games. For now, I have 3 projects that are active at the moment and sometimes I wonder where I find the time to sleep. I try to make lists of things I would to accomplish and try to finish as many as possible but sometimes you can get too obsessed with one project and forget about the rest.
My week usually breaks down into:
- Monday to Wednesdays – Work on the “main” project. Right now my main project is adding Game Center features to our game Last Call.
- Thursday to Friday – Secondary project (usually the next game that we are working on). Right now mostly focused on “Adventure”, an online game creation system.
- Saturday & Sunday – A break and research. Right research, design, prototyping of a HTML5 Game Engine and our next iPhone game. Also I do some marketing, write some blogs or do some reading.
My day usually start around 7:00-8:00 or so. I try to go out for a walk/run in the morning, back by 9:00. Then it’s work until Lunch and a game. Work till Dinner…watch some TV until about 7 or 8 and then working till 11 or 12. There are off days and days where I take a break and try to do something else but that pretty much the routine. I also try to ‘work outside’ at Starbuck once or twice a week to see other people.
Have a productive day eh! Hmmm..that reminds me I forgot update my own blog…
(Previously posted on iopixels.com)
Salutations from Big Bad Robots. Yu (or MR. YU) as he was known invited me post once in a while on iopixels, you know just for fun, laugh, chuckles…and some crying into beer which is where alot of thing start.
My name is Terence, I have been developing game professionally for over 9 years. Mostly in Malaysia, although I have thought about going overseas and working in some big studio the only 2 things holding me back are the food and the ability to make my own games here in Malaysia. I suppose that makes me an Indie developer and I am going to talk a little bit about being an Indie developer in my first post (just to make sure we differentiate between Indie developers and people who get paid money to make games for other people). Yes, I might piss some people off in my definition but I have pissed so many people off already, what’s one more!
- Mostly self funded – There are grants,money out here in Malaysia but if you need it to make your game and can’t get started without it then I would question your passion, intentions and integrity. Too many people consider the government a cash pit to get money out but funds are limited and IMHO should be only given to the deserving. If you can public money, do that first. If you can get money off of contract work, schlepping web sites or put aside enough of your savings. Personal investment into the games you make are always a way to motivate you.
- Original games – Original games doesn’t mean …oohh look at that artsy game…it’s a game thought up by you (yes could do a clone of a game with different controls). It may be a puzzle game, a driving game, a drinking game (Shameless plug for Last Call). But it should be your own from beginning to the end till death do you part.
- You are trying to make a living out of it – Indie developers versus hobby developers. I ain’t saying hobby developers are necessarily bad but Indie developer do want to eventually make a living off of their games. Every game they sell makes them feel better and want to make more games.
- You shipping at least 1 game a year …Ducks and Hides…but why not? Many Indie games take longer than a year. while a labour of love can take 2-3 for a complex 3D game, I am not sure how long people can go without making any money at all…release a technical demo if it takes longer..to our community at all.
- Can’t explain to people what you do…Yes auntie …I make multi-media products..actually it’s better now..everybodies got a an iPhone…Yes Auntie I am rich making iPhone products..Where is your cute daughter?
I think I will leave all of you with that.