In case anyone had any doubts about it, I’ve officially decided to move the pipeline for “Ghost of a Tale” from the CryEngine onto Unity 4. It wasn’t a trivial decision by any means (after all I’m one of the most vocal CryEngine evangelists out there). As to the reason why, Unity is simply a fantastic SDK to develop games on, easy to work with and is ideal for me since I don’t have a team of TDs/programers to bail me out when I’m against a C++ wall.
As always in a transition situation like that, a lot of work is required but it’s better to just bite the bullet and get it over with. And in the process, I have actually expanded on what I previously had in the CryEngine. Here’s a WIP screenshot for you, if only to show that Unity can pack some nice visuals (and still at almost 60fps on my non-gaming video card):
So in just a few words, I have now:
– A fully functional camera which automatically adjusts its position so that it doesn’t go through walls. It’s also smart enough to allow thin pole-like meshes to get in-between itself and the player, as long as the player is not entirely blocked from view. In fact the camera feels a lot like what’s in the CryEngine SDK (Crytek does nicely responsive FPS cameras), with the added feature that you can adjust its distance to the player with a flick of the mouse-wheel. Which is nice.
– An overall tighter and much more subtle control scheme for the player character where I control absolutely everything, from transitions to custom animation parameters. And Unity’s Mecanim system is a joy to work with.
– A rudimentary foot IK system that adjusts the height of the feet in idle mode, depending on the surface the character stands on. I learned a lot about raycasting on that one.
– A HUD with a functional compass and a stamina-depletion system; the main character is a mouse and can optionally run really fast on all fours, so that was necessary to keep the player from zipping from one end of the level to the other.
– An item label display system that shows a name tag over any item of interest in the world, depending on the distance. That way the player knows he can interact with those. I could have never dreamed of achieving something like that with the CryEngine, since I don’t program in C++.
Anyway, I’ll post some more on my progress later. There are still many things I want to implement, but one big milestone will definitely be converting the enemy AI to Unity’s system…