After released Ancient Continent Google Play and BlackBerry version, I felt some easier, watching the players enter game to play, in that time, there were some words to say.
When I open the blog and start writing, I don’t remember anything. I’m reading a book named Black Swan which about how to deal with highly improbable uncertainty thing, it descript a narrative fallacy for forecasting about people just interest in those successful career and man instead of those failed, even if with same tech, founder nature and same market environment.
I’m afraid we are far from real success, so dose the article or conclusion I wrote could be accepted by many people? On the one hand, I talk about tech, marketing, relationship, on the other hand, our game app is not famous or glossing absolutely, sigh, to make I can’t remember anything.
If someone lead team, complete project or event start a corporation, finally, show his experience anywhere if successfully or complain anywhere if failed. He could become a teacher or become the scorned, these two result were both looked down by me. What should I talk? After all I’m a programmer with some tech, so the neutral tech is not subjective judgment for good subject.
— Now depart from common player, just talking about tech, if you don’t interest in tech please Alt+F4 —
1,About how server would be created and which database would be chosen.
Before 4 years, I found a job with a founder boss of that company, expand from 4 person to 40 employee in 2 years. Our PC MMORPG had grown from a simple demo with one scene to a complex economy system and friend system. Everyone in company was full confidence to earn a lot of money, however, when we released a beta testing version, thousands of players flood server and down, players’ data rollback, finally players run away, our partner run away, employee run away, why? The technical bottleneck effected.
At that time, C/C++ was our main developing language and MySQL was main database and thanks to some effective problem, use a mid-layer for write/read data from database. Like a agent instead of foreground waiter, bring you go to bedroom, if the agent was down, the whole service was game over, your data was gone. Many games made by other company had a same problem, so we didn’t research this architecture deeply but were absorbed in fix bug. If those bugs made server down were fixed absolutely, the whole would be stable at all. Finally, bugs never disappears since that time.
Then I left from that company to be hired by some company to develop mobile game apps. The game apps also had server, the senior programmer of server had researched in bank system. In order to learn server’s code, I declared I could write some Java (YuchBox’s server was wroten by Java) when our team had been short of server engineer, I helped our PM to develop server-side.
I see, the server-side code could be wroten like this: use the database as RAM. The client protocal message has been processed and wroten into database immediately when received. This way is similar with HTTP, request-response, if the server was down without agent of writing database, the client know whether this protocal message had been process right. This architecture also include a buffer name redis NoSql database in few rank sort module, so that rank system was realtime rather than old PC game architecture sorted one time a day.
In the effect of this new method, old way was not advantage absolutely. As a matter of fact, the server would run all the time with Java+Netty+MySql+Redis in Linux system (our old server run in Windows Server), so that you can ignore server’s down problem.
As for Ancient Continent game, I don’t want talk here, because the future is so confused, I don’t want to become a teacher or become the scorned.
2, About Unity and BlackBerry
A import reason to start this game project is Unity released a BB10 player. When I developing YuchBox, I though I had some market resource of Blackberry, if I make a game in this platform, many user would play, but the idea was too simple. I get rid of market way and just talk about developing in BlackBerry with Unity.
– Firstly, Unity’s C# runtime is not support Socket module.
That’s to say, I can’t use socket in C# simply to connect server, it’s nightmare for MMORPG. I spent 2 of 24 hours to research and solve this problem, C/C++ capability learned 5 years ago helped me a lot. If the C# runtime was not support, I could write a native plugin to realize. So luckly, Unity provide the way for useing native code.
– Secondly, the Socreloop which is a social platform could be visit by China network.
Now, the environment for mobile apps is better than PC (for small team or studio), one of reasons is developer use the 3rd part system instead of writing and maintaining own user account system. We just integrate one of 3rd part account system, like Google or GameCenter, to retrieve user account info (user unique identifier) to register in own server. Needn’t manage account information or password or validation.
Truly, Unity with BlackBerry also provide a easy way to integrate one named Scoreloop, and did a lot thing about this, such as writing a C# plugin. However, the terrible Chinese network destroyed this. If you visit Scoreloop from China, you just received a timeout error event if use wifi. A lot of alpha beta players review our game app to complain why initialize account system failed. Okay, just use device hardware unique identifier to login in normal version releasing.
– About Flurry
Compare PC development the other new way was developers needn’t do user behavior analysis own, needn’t write a script of database to select data how many register today, how long this user stay in app. Many 3rd part product will help you do this, Flurry is most famous of those. Flurry SDK provide version of BB10, but it had not provided Unity one. I must do this or convert it own now.
I spent one of 24 hours complete this job, decompress *.a file and found dependence library, and compress *.so file. I reviewed command of Linux again. Another nightmare.
In those day beta went to release, I had rest few hours in one day, but luck finally I solved them all, that’s best result for a humble programmer rather than work for a long time, due to some limit of different condition, it’s failed finally.
– About Unity Windows Phone player
I don’t know why the team of Unity Windows Phone realized the C# runtime with the device operating system rather than its mono like iPhone Android or BlackBerry doing so that many of library could be used, if you switch your Unity mass code to Windows Phone platform, you would got a lot error could not find many standard libraries. Because I haven’t any resource in this platform, I give up finally.