Pages

Friday, April 22, 2011

Book Review: Game Engine Toolset Development

Not so much a programming book as much as it is a look into the entire world of tools development, Game Engine Toolset Development by Graham Wihlidal is an interesting read for those wanting to improve the production pipeline or tool creation. Now that I my current job is focused more on the technical artist/programmer instead of a team lead game programmer, I figure I should take a bit more time on the technical artist and tools building aspects (which are for me back to basics). The book focuses on a wide range of topics, and focuses more so on implementation details than tool design.

The book begin largely on the politics of tools and maintenance and different stakeholders in the tools, as well as some examples of different environments in which tools are created and maintained. There are a few examples of professional studios, who focus on elaborate GUI systems, and WYSISYG (what you see is what you get) world editors.

From there, the book has a chapter on why to create tools with C# with .Net (which is the language and framework used throughout the book). While I agree that .Net can be a great and quick framework for developing solid tools quickly, I would recommend sticking with the language that is closest to the game engine or 3D application whenever possible (since it is often the case that some parts (or the entire tool) can be merged into the game code, and it is better to not have too many languages in any production environment (if possible)).

There is a lot of focus on coding standards, design and documentation which is extremely important for tools, since they are often written specifically for one project, and can be very difficult to port to other projects if the design and standards are poor. Plus, the fact that many tools are written once and then the programmer moves on to something else, it is easier to forget why the code was written a certain way when come back to it in six months. Having a good design and (up-to-date) documentation is very important if no one is going to be looking at the code until the next project, or something breaks. There is some discussion of code metrics, UI design, using NUnit for unit testing, Microsoft coding conventions and using FxCop to enforce coding policies (I also like StyleCop for coding standards). The coding documentation is with NDoc, which I am not as familiar with, but will have to check out sometime (I currently like Doxygen since it is useful for a lot of languages).

All in all, a good book that deals a lot more with the entire job of tools development, which is somewhat unique in terms of computer books. I realize that for some people (and companies) the need for tools is not quite so apparent. The best analogy I can think of is that tools are the "scaffolding" in which you can build up any project. They solve the simple problems, help tackle the larger problems, glue together what needs to be connected, and improve the productivity of the entire department. Without scaffolding tools everyone would be trying to add another floor to a building by hanging out a window, and if that is the case, you are not going to be able to build quite so high...

Keep reaching for the top,
Michael Hubbard
http://michaelhubbard.ca

Saturday, April 16, 2011

Full Indie (Game Dev Event)

In order to keep up with some of the game development stuff, I decided to attend Vancouver Game Indie community (Full Indie) demo night: http://www.fullindie.com/2011/04/12/april-event-game-demo-night-rocked/ It was interesting to see what Vancouver had in the way of indie developers, and looked like there was some good stuff. I suspect that a large percentage of the community was students, but it is always interesting to see what the professional indie developers are up to.

All of the games were interesting, but I especially liked Justin Smith's No Brakes Valet, which is a flash game he created at a game jam, in which you attempt to park cars in different parking stalls, but occasionally there will be some with "no brakes" which makes the car crash into things. He also had a good quote about this: "if you are good at the game, it should be fun, if you are bad at it, it should be fun" (paraphrase). This is good advice for any game designer, and was especially true in his game when the cars banged into each other (without brakes) and caused the other cars to bounce around making a really enjoyable mess. Overall a good experience and look forward to seeing what else it out there (who knows, maybe I will get a chance to contribute something sometime in the future).

Cheers,
Michael Hubbard
http://michaelhubbard.ca

Sunday, April 10, 2011

Search Engine Optimization (SEO)

While I usually spend my time dealing with game engines and pretty pictures, it is always good to know a bit about what is going on in the web too. I find that web technologies move very quickly, and while sometimes there are fads, often they will be coming up with new technologies that are worth taking advantage of. While I am looking into these things, I enjoy my blog and website http://michaelhubbard.ca and it is always interesting to see how to improve the look of and use of your website.

The article at the adlibgroup http://www.theadlibgroup.com/headlines/create-a-website-google-will-want-to-show-off has some good tips and has some interesting facts I did not realize (like the all importance of the title tag). The idea of searching for your competition is also an important one if I was to ever make a business website, although updating content everyday will become a full time job :P

Until then, I will look at applying some of the tips to my own website, since if you are going to do something, might as well do it properly.

Wish me luck,
Michael Hubbard
http://michaelhubbard.ca

Friday, April 8, 2011

Game Review: GameDev Story

There is a fun little game GameDev Story for the iphone/ipod http://itunes.apple.com/ca/app/game-dev-story/id396085661?mt=8 that I have been meaning to write about. The game itself is pretty addictive, and kudos to the idea and execution (if you haven't tried it, it is definitely worth a look, and some of the games you compete against like "Street Cleaner 2" are pretty funny). That being said, the thing I liked was the focus on the people, and getting the right people can really make or break your success in the game industry.

With the focus on people I think a few additional attributes would be appropriate/realistic for those who have never worked in the game industry:

1. Training time for new hires. It is nearly impossible to expect people to jump into a new or established company and be as productive as someone else who has been there a while. It would be interesting to see what replacing someone at the start compared with at the end would do for the training.

2. Employee moral, the devs come and go and often appear to be working all hours of the day (some just leaving while others are coming in). It would be interesting to have some sort of happiness meter that decides whether or not the devs decide to stay at the company or go work somewhere else.

3. Teamwork. How well to the devs work together? It would be interesting that those with great people skills and coding skills are not always in the same package. What kind of results would happen if the devs were not working well together, or there were personalities that clashed. This would also go with employee moral, as it can be a burden on the entire team, even if it is only two that are having problems.

4. Budget vs Time: In the game you are not really punished for fixing the bugs, and can release it earlier if needed. Instead, it would be interesting to factor in some sort of delay mechanism, if a project is not on track and how to get it back on track.

5. More human factors (sick days, holidays, vacations, bad days, stressed days, tired days, etc.), also would be intersting to see how well the work life balance played out for these happy little characters :P

For those looking at running a game studio, the best advice I can give is to join one yourself, even if you don't learn exactly what to do, learning what not to do is also a useful experience.

Best of luck,
Michael Hubbard
http://michaelhubbard.ca

Wednesday, April 6, 2011

Technical Artist at Bardel Entertainment

So I am just a few days into my new job as a Technical Artist/Software Engineer working for Bardel Entertainment http://bardel.ca/ in Vancouver. It is pretty exciting working with some old friends from Leap In Entertainment, and the work that goes on here is some high quality 3D animation. It is a little different than being a team lead game programmer like I was at Ganz http://www.ganz.com/(in Toronto), but I am happy for the change. I enjoyed Toronto and made some friends there, and wish them all the best, but Vancouver is my home, and I am glad to be back.

I will likely be delving more into personal game development and hobby projects, so I am looking forward to some of that and will see about posting something intersting soon.

Back baby!
Michael Hubbard
http://michaelhubbard.ca

Saturday, April 2, 2011

Python Design Patterns

There is an intersting talk about Python design patterns at http://www.youtube.com/watch?v=4KZx8bATBFs&feature=related from Google Students. I really liked the comment that "Design Patterns must be studied in the context on the language in which they'll get implemented" as some patterns can be change or disappear entirely if there is a better way to do something that the language supports.

One of the interesting talks on everybody's favorite/hated pattern is how to deal with a singleton. Singleton's are conceptually good (just one of something) but in practice they so often become just global variables as noted here http://c2.com/cgi/wiki?GlobalVariablesAreBad I personally prefer using dependency injection whenever appropriate, as it gives a lot more flexibility in what class the objects are actually interacting with. However with python there is an intersting approach in using the module as a singleton. This has its own issues (no subclassing modules, etc.) but does provide an interesting approach to think about (especially with the lack of private methods/members in python).

Good luck,
Michael Hubbard
http://michaelhubbard.ca

Friday, April 1, 2011

Book Review: Python Developer Handbook

A worthwhile tome of knowledge, Python Developer's Handbook by Andre Lessa is a good introduction to Python in all forms. While it does not deal with Python 3.X it still gives quite a lot of examples about how complete python is as a language, and how useful it is for tools. As one of the big three languages used by Google, one of the most popular languages in academia, API implementations for some of the big 3D tools (Maya, Blender, Fusion, etc.) and one of the most talked about languages in the world http://langpop.com/ Python is likely going to be around for a while.

For those that don't know, Python is also named after Monty Python (the greatest sketch comedy show and some of my favorite movies of all time), and throughout the book (as is Python tradition) to use examples from the sketches as part of the fun. Such as:
print "I'm a lumberjack and I'm ok!"
The book start with the basic syntax, exception handling, and object oriented programming and then moves to more advanced topis such as extending and embedding python, distribution, databases, and threads. There is a significant section on network programming, web development data manipulation with XML. The book covers both some higher level modules and lower level details. Along with the network programming is some information on GUI and graphic elements, as well as UI elements with Tkinter.

The development tools mentioned in the book are IDLE, but I would recommend Eclipse + Pydev as the way to go. Pydev is a great IDE, and the debugging options from Eclipse are really great.

I use Python for creation of tools, Maya API scripts, and more, but learning more of the networking tools makes for a more complete game programmer/technical artist :)

Bye for now,
Michael Hubbard
http://michaelhubbard.ca