Multi Platform - Best Practices?

Hi Unity3D forum, I am new…I’ve read a lot in Unity3D forums thus far and I have a few questions…

I’m looking for suggestions on what would be the best practices on thinking about how I should structure my code/libraries with Unity3D when starting on a project that is to be scalable.

My initial release of the game will be just for mobile devices, then as I find things that work for gameplay, story…I would expand to desktop applications on Mac and Windows and finally deploy on Wii, XBox and PS3. I am aware of the difficulty of licensing with game systems…if the game was a success I would accept selling the project etc. This will be a long term project anyways.

I was wondering what would be some things I should be aware of so that my mobile game can be scalable from the beginning to more advance systems. My 3D model program will be Maya. The final game will be a MMO/FPS multiplayer game with different equipment sets etc. When the game is played on a mobile device I am considering using a PHP, MySQL option which will allow a way to interact with their desktop/game system deployment. Such as, moving map items, inventory…choosing a skill to work on. Limited stuff on the mobile app side.

I’m looking at using SmartFox as my multiplayer server…seems to be a lot of people using this. Will SmartFox get me all the way to multiplayer MMO or FPS on a game system? I may use a free one to practice proper ownership multiplayer thinking in the beginning if there are good ones out there? Only one I saw mentioned on forums so far is ES5?

If I want for my game to run well and still feature a lot of 3D objects/art on a mobile deployment should I build my models with varying poly counts (low - mobile, medium - game system) with scaling to larger systems in mind?

I was looking at playing with some components for unity such as Detonator and others that I find. Are there any pitfalls I should be aware of using components/plugins etc? With scalability in mind.

Thank you very much for your time and suggestions, I am generally looking for good coding/development practices I should be aware of. Are there things I should stay away from such as using Object2Terrain…as perhaps it won’t deploy well to certain platforms. Are there some things such as working with plugins that will turn into headaches and stifle progress on core of the game? I am kinda looking for the vets to say, “here is a good “box” to play in.” Almost a set of guidelines seasoned developers would like to see in the code and in the models if they were passed the project. Basically the proper way to do things…as if there is one :slight_smile:

Thanks for your time and input. Hopefully this will be a good topic.

Regards,
maconbot

First of all, I never used Unity mobile. But still I think I can give you some hints…

  1. Take a look at http://www.epicgames.com/technology/epic-citadel
  2. Rethink whether you project still makes sense on mobile devices
  3. My advise, if you are not part of a professional team, is to start on PC platforms and keep in mind that you wish to go to mobile some day so you keep your scene as simple as possible… Unless you want to do an MMORPG like Warcraf, Unity networking should be fine. After all this is something you can think about when the game is ready since it is a solvable issue anyway… But the way to the point where you need MMO networking is long…

About scalability. I think developing a game for mobile and any other platform at the same time is doomed to fail. Mobile devices are just about 10 years in the past, at least and you won’t be able to close this gap if you game shall be more than just a retro port on other platforms… Its hard enough to get PC and consoles together… Many things will also run on mobile though, when looked at as standalone… But the question is will your entire game run ;). As you can see from the Epic Citadel demo, the maximum that is possible doesn’t look to promising for writing some sort of MMO on mible devices at all. Considering that they are probably “masters” of game dev with high amount of cash to spare for such “demos”; it is unlikely that a normal developer could produce something close to that any time soon; and for a reasonable MMO you would to go far beyond what they have shown. Instead starting at PC, then publishing on consoles and then, maybe after two years, the mobile devices will be much faster and your original intention to publish it there can then be accomplished… And you already have the game ready at this point and only need to think about how to optimize it for mobile. You probably have a lot of money from PC/console platforms to afford the dev costs for such advanced mobile games… BTW publishing on consoles alone (without dev costs) will costs you a good bunch of hundred thousands of dollars license fees…

The good thing about the PC platform is that it is generous. You don’t need all the great artwork and highly optimized models and scene… It just runs, since the graphics cards (and also CPUs) are not even pushed to their limits by recent AAA titles, thanks to consoles. So for a usual project it is almost impossible to have a game not running on PC. Further you have almost no license fees, about a hundred million of potential players, can debug and test your application easily… What more does one want xD

Can’t really give a comprehensive list, it all depends on your needs and wants.

Investigate whether your gameplay would work on each platform you target. Use the weakest platform as the baseline. Don’t use stuff that isn’t supported on all platforms you target, or at least implement graceful fallbacks. Use a generic solution for stuff that’s different on each platform, like input, and write specific handlers on top of that per platform.

Thank you for the replies. Your advise left me with a few follow up questions.

MrBurns lol I love it…when you say “simple as possible” do you mean small scenes? Low poly count/physics? Limited amount of interaction in a scene? For example a low rendered map that would still allow the player on the mobile device to move around and talk to people in a town, add equipment to inventory etc.

I get what you are saying as far as starting on PC platforms. I think you are making me a believer in that approach! Just from a raw cost point it makes the most sense. I am still interested in the mobile market, but perhaps more mini games which will prelude the main game I am working towards. What do you think about not having the mobile extension of the game not being multiplayer, but still allowing a player to move forward in the game. Such as…setting a players toon to the act of farming or blacksmithing to build up a skill and perhaps earn you some $ or trade ability when you get back home. I may still play with mobile development in maybe physic based games and more narrow focused in the beginning. I suppose what I will do is research out like Jasper suggested, whether my gameplay will work on all the platforms I want to target. I’m kinda brain storming out loud how I should best structure my classes on the coding side. I do take what you are saying to heart, so now I am rethinking my approach as you suggested. I just know myself, and I will want to deploy a few mobile games, even if they are not part of my large project…just to get feedback and feel like I am accomplishing something :slight_smile:

Does unity have a way to detect what platform it is being played on, so that if it is a weak platform I can skip that part of the code? Or is it better to build multiple Unity3D projects for the various platforms which will require different game play due to platform limitations…is building a core library and when adding new features to the game role out the updates to the various projects the way to go. OR is it really just better to focus on one market, like MrBurns suggested. Try to make some there and if I will have the to pay for licensing, then recoding the game is the least of my worries? I’m just thinking if it isn’t much more work to drop in some snippets of code during version 1 why not do it. But I see both points.

I will eventually want for the game to be a MMO with some RPG type things in it. How many people playing simultaneously can Unity Networking handle? As in players moving around, interacting with objects or each other and seeing it happen on everyones screen. If unity networking can only handle a small amount of people playing at the same time, would it be advisable to perhaps run different servers and limit the amount of people allowed in as to optimize game performance?

I did do some playing around when I first got into Unity with creating a multiplayer game. 2 players on the same system was easy, but doing players online was going to require more research.

Will the above mentioned Frame per Second still of game play take a huge amount of time or is this all handled well in Unity Networking now? I know when I first picked up Unity, the Frame per Second styled multiplayer game deployment was still under development. I imagine things have progressed? If Unity networking won’t work/stops working do to success and I need to go to a bigger server are there things I should keep in mind when making/coding the game, so that it won’t be as much rework when I am ready to deploy as a MMO? Such as creating objects in a certain way, or leaving snippets of code with outpoints to send to the server etc.

Thanks again for all your input. Asking these questions has probably already saved me a week of wasted time developing down some silly direction that wouldn’t work.

Regards,
maconbot