Would Like to Develop Cross Platform Retro 2D Game - Is Unity Good for Me?

Hello people!

I am planning to create on my own a small platform/adventure game like Tiny Barbarian.

I have some experience with AS3 and Haxe development; I know the basics of developing a platform-style game, like handling collision detection, proper way to handle jumping and animations, and so on.

I would like to develop the game on a framework that is as cross-platform as possible; Unity obviously is perfect in this regard (with Haxe I have problems getting things to be exactly the same on multiple platform), but I am finding it a bit cumbersome to develop the kind of game I am trying to develop. So far I have experimented with the 2D Toolkit and with Futile (which is pretty easy to work with), but with the iOS basic license I am long loading times at the start of the game - like 20-30 seconds. The same game made with Haxe or with Cocos2D loads in 2-3 seconds.

I would like to know if this is normal for Unity in comparison to other more lightweight engines.

Also are there some pixel art games made with Unity I could check? I know that The Other Brothers is being made with Unity and it looks awesome, but that is a project being made by a team with huge experience in game development and Unity3d.

I am bit torn right now about whether I should go back to tools I know better and simpler to use or keep in digging in Unity and eventually find a way to optimize stuff further.

Thanks!

You’re right about unity being great for cross platform. As far as the 20-30 seconds of loading, I think that has a lot to do with how optimized your artwork is and how compressed and small you’re able to get your art. Also, the number of game objects in the scene can have an affect on how long it loads. I know there are advanced techniques of streaming and stuff like that to make loading faster.
The thing about making a 2D game in unity though is that you can make a fully 2D game (or at least fully appear 2D), but you still need to think and code in 3D.
As far as examples, swords and sorcery I think was made in unity (and if it’s not, you very well can make something like that in unity, but I’m pretty sure it is).

Unity is amazing for gamedev in general,but 2d is a problem mainly when your friends that use game maker or other 2d engines make fun of you because of the issues generated by the 3d world.

As for another example, Bad Piggies is a 2d game and was made in unity.

20 to 30 seconds load times are not normal…

I have made scenes with 500,000 vertices and six seperate 4096x4096 textures in them. These scenes load in like 2 or 3 seconds.

Make sure your not doing anything ridiculous in your start functions and that your textures are optimized and batched! If you don’t compress your textures to PVR they will radically increase loading time.

Also understand that there is an initial ‘engine initialization’ time period when you open a unity app on iOS.

When you first open your unity app, it will open and initialize the engine, the engine initialization takes like 3 seconds, but that only has to be done once. Loading all subsequent levels will only take the time to load the level, and not the time to reinitialize the engine. So if you compile a Unity app and have it go straight to your game level on launch, the load time you experience is the engine intiialization time + the time it takes to load your level.

Which isn’t representative of an actual end-use scenario. In an actual use scenario, you will launch your app, it will show your splash screen for like 3 second while the engine initializes, then it will go to your menu or entry sequence, which should not be heavy, and should load quickly, so the user doesn’t stay on the splash screen long. Then the user will navigate your menu and click "play level 1’ or whatever and load level 1, which will only need the time to load the level, not initialize the engine as well, like it does when you first launch the app.

So to see the actual load times of your level, be sure your app launches to a menu level that has some ‘load level’ button you have to click. The actual load time of just that level is that time it takes after you click the load level button.