forma.8 devlog - new edition - chapter 01Introduction and geeky stuff
My pal Andrea (mauz, who wrote the post above) has already posted the revised map for our intro zone. If you compare it to our previous screenshots you can see they are similiar but a lot of works went in the color choice and in some little details, so everything is a lot more coherent than before.
We've worked a lot on the project in the last few months, and we promise we'll share a lot with the community and have a more active devlog starting... now.
We'll share a more screenshots and movie soon, but first I want to give you some technical data (geeky stuff!). As I said in the first post, we are using the Unity engine to develop the game. It was our first choice for a couple of reasons:
1) I'm using the engine since its first incarnation as an OSX only editor, in 2005, so I know it pretty well.
2) I'm not a great programmer, and Unity is simple as hell to use. Doing our own engine was out of question.
3) It's fast, really fast for prototyping.
4) It's artists friendly.
5) It supports a ton of platforms. forma.8 is born as an iOS project, but if everythings goes well (finger crossed) we'll port the game on every platform we can work on (PC/Mac is a given obviously!).
I know I'm talking a lot about Unity, but I fell that without Unity we would have never been able to work on a project like forma.8 by ourselves. Anyway, back to technical data... our target was iOS, from 3GS/iPad 1, and since we are hardcore gamer at heart, after some positive tests on the platform, we set in stones some features that we wanted at all costs in the game:
- A very good control system!!
- Lots of stuff on screen! Moving!!!
- Pretty graphics! Particles! Yay!
- Lots of physics interaction!!!!
- ...and did we mention 60fps?
The CPU is not a big problem, it's a bit weak on the 3GS but plenty fast for physics/moving a lot of 2D object on iPhone4+/iPad+. In fact we were pretty amazed on what you can pull off with that little ARM chip. Unity and Physx, while optimized more for 3D, are really fast. Probably a custom implementation with Box2D could be faster, but we are satisfied with the results and... I'm not good enough to try to put another physics engine in Unity.
The real problem is in the GPU: fillrate on the first iPad is simply horrible. You can throw around a lot of polygons, but just use a bunch of big alpha object on screen and you're screwed. Problem is: some of the shader we used relied on alpha to do a sort of fake antialiasing on the splines to smooth everything out. We pondered about it a lot, we tested different solutions, but in the end we decided that 60-constant-fps were just too important for the game so we just revised the graphics on the first gen iPad to eliminate the fake (and costly) antialiasing solution. And, since the PowerVR is amazing in doing hardware antialiasing, simply added 2XAA on the iPhone 3GS and iPhone 4 and 8XAA on iPad 2, iPad 3, iPhone 4S and PC/Mac build of the game.
With full antialiasing on the graphics is a lot more pleasant, but on the first iPad it's jaggy. We tried to avoid this, but the GPU is really underpowered fillrate wise and with our graphics style it's impossible to avoid. At least we tried, but in the end we feel that a stable frame rate and a more coherent visual impact is a lot more important.
Two screenshots from the game, on iPad 1 with no AA and on iPad 3 at full retina resolution with AA 8X enabled:
iPad 1, no AA:
iPad 3, retina resolution, AA8X:
Sorry, I know the images are really big, but I wanted to show how the game looks at the original resolution/AA on the devices. Those are alpha screens, but there is another effect that we added after pondering a lot about it. Just let us know what you think!