Today was the first day of onGameStart. It is a conference about HTML5 games, so I’ve learned a lot about canvas and WebGL. Here are some notes from lectures I took. There are a lot of links in text, check them out. I name lectures by what they were, not how they were named, as they official names were long and a bit misleading
Spilgames – Rober Van Os
First lecture was about Spilgames and how they try to reach HTML5 developers. I was actually surprised with the size of their audience, they have over 130M users worldwide. Lecture was also about best practices in casual gaming – simple controls, gameplay easy to learn but with challenge for long-time players, localisation, etc. I hope Spilgames will push HTML5 forward and let us fight Flash!
Octrees – Jakub Siemiątkowski
The octrees topic was very interesting for me, as I work on my 3d engine and space partitioning is a great optimisation. The speaker has presented the general idea, shown a working demo of octree and some code, but refused to share it as he wants to show it also on JSConf in Berlin. I hope after that I’ll have a chance to take a look
How to implement 3D engine (in 2D canvas) – Marius Gundersen
I didn’t want to do better/worse stuff here, but sorry, Marius Gundersen did a tremendous job and his presentation was totally the best thing I’ve ever seen on any conference! He has implemented, step by step, 3D engine in Canvas 2D. It’s something similar to my js3d, except that he did it right. My code is rubbish and took me 3 months to write, and he created a beautiful piece of code in around 30 minutes. I may be exaggerating a bit, as he obviously prepared his code before the lecture, it wasn’t live coding session, but it was very clear and impressive anyway.
I think however that there was a little trick in his engine that was not mentioned during presentation. Using drawLine and back-face culling can produce some artifacts when dealing with concave objects (you can see this in my js3d as well, notice disappearing polygons on the monkey face). The much better solution would be to store all pixels in z-buffer and after scanning z-axis put all on canvas with putPixel. This however is very similar to what WebGL does on GPU by default and I don’t see the point of pushing 2D canvas so far.
This was the best presentation today, don’t forget to watch it (and check out awesome demos).
CAAT/Ludei – Ibon Tolosana
I’m a little confused by this presentation. I usually don’t like people showing their product without showing their code (a.k.a. marketing speech). This time it was different. Ibon was sharing ideas they implemented in Ludei while working on CAAT, multi-platform game engine and it was actually interesting.
Putting abstraction layer on virtually everything is quite common solution, but what surprised me was the support for mobile devices. Ludei have found that iPod/iPad/Android JS engines were quite really poor in terms of performance – especially Safari with canvas. So they took JS core written in C++, tweaked and tuned it to work correctly (with OpenGL and OpenAL bindings), and compiled it. This way they got apps that are written in JS and are not using mobile browser at all. The JS engine is compiled in the app itself. Of course it runs in normal, desktop browser as well.
I don’t want to go into technical details, because I obviously have no idea how it actually works. I may have confused something, but I hope you got a general idea. We haven’t seen a single line of code, but it’s on github anyway.
Isometric Engine – Rob Evans
For the first few hours of the conference I have been sitting just behind Rob Evans. During the first lecture he took out his Mac, started some kind of iPowerPoint and began to prepare his slides. It took him few hours to get it done, then he went out for lunch and after that he gave his lecture. I was expecting that he would be terribly unprepared and nervous, but he wasn’t. True balls of steel.
His presentation about Isometric Engine was very mind opening, especially on optimization techniques. You can check out the demo at http://www.isocity.co.uk/ It is a great visual example of how dirty rectangles work (press entity debug button). There was also a lot about network, multiplayer games, server-side physics and other stuff. Very complete and accurate presentation. And I’m still under huge impression after I’ve seen how fast it was prepared!
Solpeo – Piotr Sadowski
I’m sorry to say that but it’s the only lecture I was a little disappointed with. A Polish company, Solpeo, is working on the same concept that Rob Evans have shown, except that they spent a lot of money and effort on it while he did it after hours. Ever worse, his results were much better, or at least they looked like better. There were also some technical difficulties during presentation, with projector and with font size, mainly because of Linux laptop the speaker had. I love linux as a server and as OS for development but please – do not ever try to bring Linux to the conference. Get Windows. Buy Mac. I you are still not convinced watch Lunduke’s lecture about it.
Ok, after sharing an opinion that will probably prevent Solpeo from ever hiring me, I have to say that they actually made something very very impressive. You (probably) know how troublesome generating 3D sprites is. You have to prepare a huge amount of renders of hundreds of models from different angles, if you want to have some avatar customization. What Solpeo developers did? They took Blender, which supports Python scripting, and made an on-fly rendering service out of it. Every time a player choose clothes for his avatar, they are merged with basic model and rendered into a 3D sprite. This way only combinations that are actually used have to be stored. And it’s done without hours of work on merging all possible models.
There is still hope for you! Just hire Rob Evans
Enchant.js – Ryo Shimizu
It was the strangest lecture I’ve ever heard. Ryo admitted that he is tired and has jet-lag, also he spoke very rough English (like mine, but with Japanese accent). He started live coding, wrote maybe ten or fifteen lines of code and showed result in a browser – moving bear sprite.
Then it started to be totally out of control. He continued with his presentation and showed some slides about Fukushima power plant, the earthquake and its disastrous results. He told us a story about his family, about people that lost everything and it was really quite touching. From this events his company had emerged. Because after earthquake children were forced to stay at home, they had nothing to do and play with. Ryo started an educational company, UEI, to teach people of age 16 to 22 how to create simple online games. This is how enchant.js was created, and the rest of presentation was about engine and its impact in Japan. Ryo leaded a very funny speech, full of japanese words nobody understood and english words nobody understood. I think it was great, as it was the last lecture and everybody was tired, so a bit of non-technical stories were really refreshing.
Also it was rather clear that enchant.js is quite powerful and easy to use. We heard a stories about kids making over 100 games in 10 days after initial release and housewives attending gamedev workshops, so check it out or play some games at 9leap.
There were two lecture rooms and my bilocation is still in alpha stage, so feel free to drop comments about other lectures as well. I also probably made some mistakes and offended few people, so sorry for that. Hopefully tomorrow will be as good as today.