07 6 / 2012

Foreword: This post is part of a serie about the Game Dev Party, a yearly videogame creation event held in Lyon, France.

So like I said in a previous post, I mainly worked on the frontend part of the videogame we developed, since I’m a web developer before anything else. Actually, even though our game had to be browser-based (per the Game Dev Party rules), we did not even need a web server (we wrote the server in C++ using the websocket++ library).

Early prototypes of the game were written in javascript, which seemed the de facto choice for that kind of work. At that time I already had heard about CoffeeScript, but hadn’t had a chance to truly forge my own opinion about it. All I could say when asked about CoffeeScript was “meh, I don’t know.”.

Project Revenge OUT (our game) was my first big javascript project outside of a website context, and hell did I learn a lot of things about javascript. I knew javascript was a prototypal language but only then did I learn what that really mean. I’m not going into depths about prototypal inheritance and all, suffice to know it’s different than class inheritance, way different (please not I did not say better or worse, just different). I also confirmed something I already suspected: beyond its compact syntax, javascript is very verbose.

After a few days of writing tons(actually something like 1600 lines) of javascript, we eventually grew tired of that verbosity, decided to have a more serious look at CoffeeScript and proceeded to rewrite the entire project in CoffeeScript. The rewrite got us down to about 900 lines of code and took only a few hours (while learning the language at the same time). Yup, that’s only 56% of the original codebase. On top of that, CoffeeScript offers a variety of syntactic sugars that make writing code a breeze.

Apart from the language itself, we learnt a lot of things about so-called HTML5 technologies: Canvas, the Audio tag and the likes. I’m pretty confident when saying I could not have gained the knowledge I now have about these technologies by continuing working only in a website context. Working on that videogame, along with some of my best friends over there in Lyon, was definitely a great, if not the best, way of learning and discovering those technologies.

Conclusion: while learning things should one of the greatest motivation of a developer, it is much more easier and fun when you are in a totally new environment and with great friends who are doing just the same as you: learning by having fun.

02 4 / 2012

It’s been 10 years now since I joined the web development industry, and I always said, as far as I can remember, that a good developer is a curious one. One willing to continuously learn from what he does at work, but not only. A good developer should constantly be looking at what’s happening in the other big areas of development. For example, in the last months, I’ve been having a deep look at functional programming, and tried (with little success) to evangelize this paradigm to my co-workers.

Now, the official — advertised should I say — goal of the gamedevparty is to gather people who don’t know each other, have them meet-up, and eventually produce a videogame in a very tight timeframe. Very good. Adding the constraint of having the game running in a web browser was most certainly the best idea the organization team had, since it opened the doors to a lot of curious developers that would have been otherwise afraid of diving into such a new development environment. You know, when you’ve been working with a browser for 10 years or so, it’s hard imagining your applications running on as a desktop app, or having an actual rendering pipe, or stuff like that.

So that’s part of why I registered to the gamedevparty: learning. The video game industry is a very interesting one. Its constraints are really really different from the web perspective. Almost everything has a new meaning here, and diving into this world, be it for only two and a half days, was a game changer for me (no pun intended). Since my (and my teammate’s) primary goal was learning, we decided to write our game engine from scratch, without using any existing library or framework.

So what can one learn from video game development, and more generally, from an event such as the gamedevparty?

A new language

As a web developer, I naturally worked on the frontend part of the game. We originally used the JavaScript for the game prototype, and I soon wanted to give CoffeeScript a try.

A new workflow

The technology stack used for the project was half-new for me. I’m not used to work with people writing C++ and having to compile shit before they can run the actual program. It’s something you have to take into account.

Self-organizing

Ok, we had a (great) team leader, but with a deadline as tight as “the day after tomorrow”, you have to organize yourself even more efficiently than ever. Taking shortcuts in the chain of command (well, there are multiple ways of organizing a 2 days project, but we decided to go “organic”), self-assignating tasks, etc.

Mathematics

Remember all that bullshit about vectors, geometry and trigonometry you learnt at school? Well, you’re going to need that (and a lot more) if you ever want to build a videogame.

New concepts

Writing a networked multiplayer game introduces its load of new concepts, such as network communication (thanks, Captain Obvious), clock synchronization and the likes. Being a videogame, you still have the base concepts like the rendering loop, displaying sprites, animating sprites, managing long-lived entities, etc.

Working under pressure

That’s something most of us already experienced, but I can assure you the pressure you put yourself under is radically different than the one your project manager puts you on.

And that’s basically it. I’ll develop most of these topics in upcoming posts, so stay tuned. I’ve also started thinking about more philosophical questions, like “is OOP really pertinent in a web environment?”, and I still have to mature these thoughts before publishing them, but rest assured I will publish some groundbreaking article about how the web development is wrong from the A to Z about the paradigm it currently (ab)uses!

02 4 / 2012

Overall, the GameDevParty was a really great experience for me. The organisation team is really amazing, and I’m not saying this because half of them are good friends of mine! They’ve done a really great work organizing the event, answering questions, and globally, just being there for people.

What was awesome

The place, while not perfect, was really nice. Near the Hôtel de Ville and Croix-Paquet stations, alongside the Rhône, there’s a lot of way to get there, either by subway, bus or bike. Could have been a bit hard to park for those coming by car though.

Anyway, the office in themselves are nice too, great volume, clean and comfortable. With a little balcony for the occasional break with a breath of fresh air, or a smoke.

Participants were greeted on friday with an apero, plenty of drinks and snacks, a cool ambiance to chill in waiting for the event to officially begin, good point :-) The breakfast on saturday morning was really appreciated too, fresh bread, jam, butter, coffee, tea, virtually everything you needed was there to enjoy a breakfast “à la française”. Last point about food and drinks, two girls from redbull would periodically pop into the offices and distribute redbull cans, which, while maybe not the best drink for your health, was indeed a great idea.

What could have been better

The only perfectible point I remember is the offices dispositions. I don’t know about the other teams, but our 2 desks were a bit short providing the needed place for 7 people to work together… Maybe if had arranged the desks differently it would have been better, but meh. 

Tags:

Permalink

26 3 / 2012

It’s been a while since I’ve not been in a coding party for a whole weekend, and I must admit I missed it. While I do enjoy coding in itself, being part of a small team, with a tight deadline and no other goal than the goal we fixed ourselves (ok, there was a “global” goal of creating a videogame, but we had our own interpretation, more on that later) makes it a whole different experience. The atmosphere, the teamplay, the friendship, the competition (ok, it was not a real competition: no winner, no losers, no prize, but you can’t keep (nor want) people from wanting to do better than the other teams), everything contributes to making it exceptional.

So what have we done this week-end? And first, what exactly is that gamedevparty thing? Put simply, it’s a giant coding party where people with different skills meet, team-up, and write a videogame in 48h. I already had a team of good friends and we had our very own project, so we kinda skipped the meeting and teaming up phases.

The idea was simple, yet appealing: shoot’em’ups (a type of videogame where you usually control a spaceships that fights hords of ennemies in order to save the world / galaxy / universe / [insert your destiny here]) are a type of game very well-suited for cooperation, and to my knowledge, a versus has never been done. Let’s fix that. On one side, you have the shooter, whose goal is, well, to survive and to kill monsters. The particularity of our little project is that monsters don’t spawn at random, or following a scripted schema, they are being spawned in real-time by your opponent (we call him the builder). Actually, this is not the initial gameplay idea, but we had to adapt to meet the deadline.

Did I mention one of the constraint of the gamedevparty was that the game must run in a browser? It make things tougher and easier in the same time. Easier because I have near zero knowledge of programming outside the web context, so the idea that I’d work with a browser was reassuring. Tougher, because you are limited in the technologies at your disposal. Fortunately, browsers now support a few features that make writing browser-based games easier (WebSockets, Canvas and the Audio tag for example).

I learnt a big lot of things during this week-end, and not everything is going to fit in a single blog post, so stay tuned for a serie of posts about web-based game development, how it works and what web developers can learn from it!

Tags:

Permalink

14 3 / 2012

(Source: twitter.com)

14 3 / 2012

So, I’ll be at the second edition of the gamedevparty #2 in Lyon, France. Having 10 years exp. of web development, the idea of writing videogames is kinda frightening, but my team is awesome, and we have a fantastic game idea, so I’m confident we will be delivering something great at the end of the weekend.