(Lost) Super Hungry Monsters’ preview on Click magazine.

Here is the preview that my dear friend and journalist Majid Rahmani intended to print on Click magazine but somehow didn’t get to the final print. Read it below in Farsi:

آنچه از کلیک جا ماند! – قسمت اول

نام بازی: سوپر غول‌های گرسنه
سبک: آرکید
سازنده: آیدین ذوالقدر، محمد امینی، سارا سلیم‌پور
ناشر: نامشخص
پلتفرم: iOS، اندروید
نویسنده: مجید رحمانی

“اکسیر سیاه”، بهترین بازی مستقل سال گذشته اگرچه عنوان خوبی بود ولی از لحاظ تجاری برای سازنده رضایت بخش نبود. در نمایشگاه امسال ما شاهد نمایش “سوپر غول‌های گرسنه” بودیم، یک عنوان کارتونی و بامزه‌ی روی سیستم‌ عامل‌های iOS و اندروید که به خاطر ماهیت کژوال بودن خود موفق شده بود افراد زیادی از قشرهای سنی متفاوت، زن و مرد، کودکان و والدین‌شان را به سمت خود جذب کند. بدون شک گرافیک شاد و رنگارنگ بازی نقش عمده‌ای در جلب نظر بیننده‌ها ایفا کرده است. مثل خیلی از بازی‌های کژوال آرکید دیگر، داستان ساده‌ی بازی صرفا بهانه‌ای برای شروع گیم‌پلی آن است. در این عنوان ماجرا از این قرار است که هواپیمایی زامبی‌زده می‌شود! یعنی تمام مسافرهای آن ناگهان تبدیل به زامبی شده و از آنجا که تنها خاطره‌ی خلبان شدن را از دوران انسانی خود به یاد دارند هیجان‌زده و مشتاق راهی کابین خلبان می‌شوند. خلبان بدبخت هم از ترس کنترل هواپیما را از دست داده و در جزیره‌ای سقوط می‌کند اما زامبی‌ها آلوده هستند و نباید زمین را لمس کنند. خوشبختانه جزیره‌ی مذکور خالی از سکنه نیست و دو غول آبی و زردرنگ دارد که اتفاقا بسیار هم گرسنه هستند. هم غول‌ها سیر می‌شوند و هم زمین از آلودگی نجات پیدا می‌کند پس چه کاری بهتر از این که مسافرهای زامبی‌ای را که از بالای صفحه به سمت پایین سقوط می‌کنند گرفته و بسته به رنگ لباسی که دارند در دهان غول‌ها قرار دهید. Brainstorm یا طوفان ذهنی یکی از راه‌های مناسب برای رسیدن به ایده‌های بازی است و “سوپر غول‌های گرسنه” ماحصل این پروسه است. برای ساخت بازی از Corona SDK استفاده شده و حدودا 90 درصد آن تکمیل شده است. 10 درصد قرار است با نظرات ناشری تکمیل شود که تیم سازنده هنوز پیدا نکرده است. برای دانلود نسخه‌ی دموی بازی به سایت سازنده مراجعه کنید.

www.aidinzolghadr.com

My thoughts on Corona SDK vs. Unity 3D

corona vs unity

I’m using Corona SDK for my current project, Super Hungry Monsters for about  8 months now and 3.5 months of it was with Unity 3D. I wanted to give this as one of my workshops/speeches at Tehran Game Festival 2013 but I thought I can summarize it here and will help people Googling more than people attending such event in Iran. So without further due, here are my thoughts comparing these two engines/sdk’s for making games, mostly mobile 2D.

Some notes:

  • These are just my thoughts based on my experience, and would love to get them corrected on any of the matters I’ll inspect.
  • I try to be unbiased as possible and I think I will because I’m not 100% happy with either of products in the question here.
  • My experience is from Unity is from their version 3.5-ish.

So here are my thoughts on where Unity is better than Corona:

1- The package.

When I was working with Unity, I was working with a great level editor and had almost all the great things that a game developer or game designer wants at their finger tips, the fact that I could pause the game, see variables in inspector and even changing them on the fly without breaking the game was awesome.

They also bundled a modified MonoDevelop IDE that had Unity assemblies in which you could put breakpoints and do  debugging, had auto complete and it was not hard to do that because of the strongly typed C# that I was using. Also there was support for Visual Studio which was great.

(Please note that C# in Unity is a scripting version of C# language, which differs a bit from traditional Microsoft C#.)

When I moved to Corona, I instantly felt the need for such tools again. I’m not a good programmer yet, even thought I’m programming for almost 7 years now, so I rely to breakpoints and auto complete a lot. I had to test various packages and some of them are Mac only. And from the ones I tested, which I think I did what I could find, I have to say that none of them are mature enough yet.

I settled with the one I think is better than the others and try to make it better with giving constant feedback to it’s developers but it’s still not there as I want it. (Some of it is due to nature of Lua that makes it very hard to interpret code at IDE’s). And last but not least, I had to pay extra for such tool.

Beside IDE, the whole level editor that Unity has built in is great. I know I can achieve similar results with tools like LevelHelper but first they are not made by the company behind the engine/sdk so it may not be on latest updates of the engine/sdk, second you have to pay extra for it.

My first item in my Corona SDK wishlist is an integrated environment. I see that some competitors are started doing this, by licensing these third party tools and revising them and give them a feel and touch of first party development.

2- Language.

I knew C# from I think 2002-ish, before .net standards came out and worked with it on several projects and when I wanted to learn to make games with Unity I had to just learn how Unity works, not C#. But with Corona I had to learn Lua, which I’m still not familiar with with due to the facts that I’m learning a new language whilst making a game with it and it’s a weakly typed language, so it’s harder to structure your code, especially topics like OOP, which is mandatory in this day and age.

3- Offline build

Internet connection is not reliable in where I live, so I rather to download big SDK’s once and enjoy offline builds rather than hoping that Internet works, and available, on where and when I want to make a build.

There were times that I could not install a build I got from Corona servers only to later find out that it was not downloaded correctly and Simulator did not do a hash check to check it’s integrity.

4- More platforms other than mobile

If you make your game in Unity, you are not forced to do mobile only. There is a vast list of platforms that you can get build for, from AAA consoles to mobile devices and they are keeping up par with the current generation of gaming, so if a new console/platform comes along, it’s much likely that Unity will add it’s support whilst Corona is just mobile only, at least for now.

5- Finding team members

It’s much easier to find people, being artists or developers, that have experience with Unity than Corona, because of it’s larger user base, that’s why I have to work alone on my game because when I tell them that they have to learn a new language called Lua and there is no IDE that gives them reliability and facility of IDE’s like Visual Studio, they just scare away.

6- Assets store and plugins.

There are numerous and vast array of great plugins on their Asset store which one can get at reasonable prices to help their development. This helps great for things like doing 2D in Unity, which I’ll cover just a bit later.

Corona added plugin functionality a while ago and they are adding different types of plugins everyday as well but Unity’s library is way bigger, at least for now.

Also any one can put together a plugin or make an asset and upload it.

7- Company size!

This may seem odd but the size of the company and age of the product does impact the product you use greatly.

One of the things it will affect is the API you will use. Because the product will be tested with more people, the team behind it will get more feedback on not only features and requests to make it better and more stable also bug reports to make it more bug free. So you will get more general API’s to use and rely less on documentation rather then finding exceptions on what to do here or if you want to do that, you have to do this odd thing here.

I’m not sure but maybe since they have to support more platforms and devices, they may need to clean up the API more.

Also since the company is bigger, they have more manpower for small things like updating the documentation and doing regular tutorials and things like this, which helps newcomers more than versed ones. And I think the current battle and competition currently is here.

This also helps you to find more learning resources as the userbase is large, the educational companies are more willing to do packages and books on the matter so you will have wider window of choices.

Last thing that I can think of that is related to this is the destiny of the company. The bigger a company gets, it will have less chance of disappearing or getting bankrupt all of a sudden. Something that happened with a solution I was using years back which affected my game badly.

Where I think Corona shines is 2D.

1- Focus on 2D

Since Corona is focused on doing 2D, so it does a better job at keeping things simple. Making a 2D game in a 3D world is not an easy thing to do, even though there are notable examples that have done this, like Dungelot, but you have to learn how to control that “3D-ness” in your game.

This is a trade-off going on here. If you want something fast and simple, you have to lose some advanced functionality. For example in my game I want to do skeletal animations and Corona natively doesn’t support it. I’ve read that Spine does this but from their example, I can say that it does not do all the things I want, like skew/resize the object as they move, and I try to avoid putting 3rd party tools in my game as much as I can, since they are not tested enough.

It’s made for 2D, so you don’t pay for things you will not use and also a lot of 3D stuff will not get in your way.

Also, if I want to make a large 2D game, like those farm games like Farmville or Clash of Clans, I will probably consider other options as well, because I’m yet to see anything other than small arcade games done with Corona. I can be totally wrong on this as I was knee deep in development and didn’t test most of the games promoted as game of the week.

Update: Read David Rangel, COO of Corona SDK team, comment on this:

Hi – check out Throne Wars: https://itunes.apple.com/us/app/throne-wars/id586974383?mt=8

It is made with Corona SDK, and a worthy competitor to Clash of Clans. You can definitely do games like this in Corona!

2- Lua

I always wanted to find an excuse to learn Lua, which is standard scripting language nowadays and Corona made me do it.

I’m starting to like dynamic languages once again, it’s very faster to program in them and also much easier to shoot your foot with the shotgun if you do not know how to write them because compiler almost never warns you about anything, unlike more traditional programming languages like C-family languages. And I see lots of smart ways to program in them that I like and comes from the inherent dynamically facet of Lua. I’ve had very bad experiences with AS2/AS3 but since I’m more experienced now, I’m more fit to use it.

3- Price

There is element of money as well but since price model of these two are different, Corona using subscription based and Unity doing licensing, one has to decide for themselves, based on how long they want to stick with the engine/sdk and which features they want but generally speaking, Corona is cheaper but as I mentioned, has some little hidden costs.

4- Light weight

Whole project is your source code with your assets, no strange binary files created by engine that you have to store.

5- Initial vision

It was made for mobile in mind, like the number 1, there are lots of things that is more emphasized here because they know what you probably want to make but in Unity’s case since you may want to make God of War and next guy will want to make Doodle Jump clone, they have to make tools compatible to do all of them so you will end up with an abomination that wants to do both but I”m not sure how it can.

 

So these were my thoughts on the matter, based on the feedback I get, I will update this post in the future to reflect my more recent perspective on the matter.

Rot Gut’s review on Persian Games Magazine.

Hi,

I just noticed that a new Persian gaming electronic magazine called “Persian Games Magazine” printed their review of Rot Gut in their first issue and they favored it with a 9/10.

You can download the English version of the magazine from this link and Persian version at this one. I took picture of the Persian one here for the convenience:

RotGut review at Persian Games Magazine emag

Despite some small things like not mentioning the game winning the title of “Best Indie Game” award from 2nd Iran National Game Festival, our lovely Lawrence Steele as the man behind the fantastic OST of the game music and even a link to the game!, their review is good.

Also I saw this page that they announced our current game, Super Hungry Monsters, to be released later this year:

Capture_

Rot Gut’s review and interview at Donyaye Bazi (Dbazi) magazine.

Our friends at Dbazi were kind to us to review our latest indie game, Rot Gut (also known as “Black Elixir”) in their latest issue. I’m proud to say that they really liked our game. They interviewed me briefly and is printed on the same page as the review. For our fine readers that do not access to the magazine, I’ve taken an screenshot of that page that you can see down here:

RotGut_Review_dbazi

I’m very proud to be part of this and hope we continue to deliver quality games. That’s the only reason I breath.

GameEmag’s review of Rot Gut.

One of best Persian gaming podcast, GameEmag, reviewed Rot Gut and actually liked it. You can listen to the section that they talk about Rot Gut at this link. (Note that it’s in Persian/Farsi).

Donyaye Bazi (DBazi) also reviewed the game along with an interview with us on their latest issue that I will put here once I get permission to.

Beside these, I’m learning Unity and prototyping some ideas for mobile devices. I’ll put more info on that when the time comes. That’s why I’ve been silent all these months, beside other things.

Click’s review of Rot Gut.

I’m a long time Click reader myself and am happy to tell you that they reviewed our award winning game, Rot Gut, in their weekly magazine today and they favored it with a 9/10 score! Sadly it’s just in Persian/Farsi but you can try translating it with Google Translate.

I extracted the review part and attached it to this blog post for your convenience.

Download it here (300KiB)

My review of Kindisoft’s SecureSWF.

For my current game, Rot Gut, I’ve been using Flash and with the inherent bad design of SWF it literally has all the source code and assets inside the final SWF. So if anyone wants, they can easily see your code and do bad things with it which in Flash world is usually hosting your game on the sites that have no right to do so. I can elaborate more on why this is the case with SWF and not with regular EXE files but I think it will bore the audience a bit but just know that EXE files are “compiled” from source code thus the source code from it’s text type is turned into binary that is understandable by machine, even though that can be understandable to humans and goes to topics of reverse engineering but that’s clearly way beyond scope of this blog and this review. Just know that in SWF files anyone can view your source code or open up your assets with a simple flash decompiler, which is bad.

There are ways to solve this problem but one that is mainly used is some category of software called Obfuscators. Obfuscation is generally the act to cipher your code so when seen can be hard or next to impossible to understand to humans. (Note that it still can be de-obfuscated by some other special software but that depends on if anyone wants to go that far to do that so basically depends on the project). That’s where SecureSWF comes into play.

Even though I generally love Open Source movement by all my heart, since my current project is commercial, I had to go after some mean of explained matters as it will be required by sponsors. After all no one wants to pay for a software that any can steal easily. I tried many different obfuscators, from ones that is used for JavaScript, as source code of JavaScript is always on player’s browser and with an easy “view source” anyone can view source code, there are obfuscators for JavaScript as well, to several ones for Flash but I find SecureSWF to be the best among them for several reasons:

1- First and foremost is the degree of complexity in the generate obfuscated code. Even though that I’m the only programmer on our game, I really have a hard time even guessing what part of the generated code by SecureSWF is representing.

2- Another important feature of SecureSWF is Domain Locking / site locking. Site-lock generally restricts your SWF file to run from list of URL(s) that you provide and is essentially needed when you sell a game to sponsors on sites like FlashGameLicence.com because no one will pay you for a game that someone else can steal and host on their own site.

3- Usually flash games have advertisement and those ads are communicating with their host via specially created keys which are literal strings. SecureSWF has a section to protect your sensitive string literals such as these but make sure to create a function that assign these values because that’s the only way they will get obfuscated.

4- If any part of your code can’t be obfuscated or is sensitive to obfuscation and breaks, you can define several degrees of obfuscation to it so if it breaks you can lower the degree until it works, which is great as you can do this for every part of your project.

I can say that there are still room for it to get even better, as I mailed some of them to the developers and hopefully they will be noted, but generally I really liked and enjoyed the experience. For example since flixel uses some hack to read input, any obfuscation on that part will break your game so you have to know to quarantine org.flixel.* from your project or any other library that is open source, after all there is no need to obfuscate an open source framework. So some template for some widely used stories would help newcomers as there are forum posts that people have no idea how to fix such things.

As the end of Flash is nigh and HTML5 games are starting to emerge, I still see future for programs like SecureSWF. Because as slightly noted at the first part of this post, HTMl5 games’ source code is vividly available to the end user so there is an absolute need for programs like SecureSWF to do so. I’m yet to see one for HTML5 games but I’m sure people like Kindisoft will use their algorithms that they’ve been using for securing Flash’s actionscript to work with JavaScript as well.

At the end, I’m posting my project’s config file’s screenshots so anyone using flixel with SecureSWF can easily config their project:

Kindisoft’s SecureSWF comes with 3 different versions that you can see their differences here.

I would be glad to answer any question or read any comments regarding this! Also their customer support was very responsive and informative and helped me to get me started, so feel free to use their support system as well.

Hope this review will be useful and thanks for reading!

If you want to buy it, you can use this coupon “FGL25” to get %25 discount on your purchases!