Hi, I’m currently working in a 2D animation/gaming company and I’ve been using Unity (w. 2d Toolkit) for half a year now. So I’m pretty much experienced on making 2d apps with it.
Last day, a friend of mine found me a freelance job for extra cash. And it’s just a simple database checking software, getting, setting, searching values and such. So there will be only UI elements (textboxes, tabs and buttons). The software will be primarily for Android tablets (and also for iPad in the future).
So, what I’m asking you guys is, would it be plausible to make this kind of app on Unity? I mean, it is a 3D game engine after all. Should I expect it to be slow and bulky for such a simple app? I’m so got used to this engine, I could do this task easily in a week. I don’t want to learn and use some other boring app making tool. Also I’m using C# and all Cross-platform C# using IDE’s I found have expensive full version prices and crippling free version limitations.
Yes it is going to be bulky…well more than a standard 2D engine. Like you said you can get the product done quickly in Unity so that will payoff and if your client is demanding something like 5-10 seconds start and load time, it shouldn’t be that huge of a problem. Plus with Unity you can add in cool 3D features or maybe push that you are using a 3D engine and you can do more unique features that wouldn’t be possible using a 2D framework…for extra $$$ of course ;). Overall I would say to use Unity, but yes there are faster options. Also Unity is multi platform so you can explain that to your client as well to get an android and iOS version out quickly.
It’s a piece of cake to work with databases in Unity. Grab the “server side highscores” off the wiki and hack it up. You can make a 2d interface that simply passes parameters to php scripts on your server, which communicates with the db and you can return the info back to Unity.
For a standalone app Unity would be great, can port to diff platforms and have a nice standalone app…
I have thought about the same thing, and I here are the pros and cons I came up with:
Pros:
+Easy multiplatform functionality
+You already know the software - will be quick to make
+Possibility to add 3D content (tho probably not needed)
Cons:
-Long load times (5-10 sec load time, whereas a simple text app can be nearly instant)
-Big file size (even tho you probably won’t use the 3D functionality it can’t be turned off and thus even an empty app takes some space)
I’d probably look into phonegap or other similar solutions for stuff like this. But if you estimate a week of development for the app, why not just do a few tests with Unity and see for yourself how much of a problem its overhead is?
Will need to use plugins to get to any native functionality
And one more - it won’t seem particularly professional. Sure you might be able to use a hammer to get a screw into a hole, but is it the best way to do the job?
Edit, June 2023: A few weeks shy of a decade after making this post, someone just ‘liked’ it. While the above still generally stands, specifics have changed in over the last 10 years, so please look up current info that’s specific to your use case.
I like that saying. Going to write that down somewhere…
I myself wouldnt use unity for what you want to do, why not look into the google Android SDK?
I had a mess around with it once, and it didnt seem too dificult to create simple apps with it.
Of course you would have to lern more things to be able to use it…
From the customers point of view the 3 last is not something they will notice anyway, but the increased battery drain might be a problem for the portable platforms. As long as the customer is happy with your software the focus should be in using a tool that lets you develop efficiently to increase your throughput.
My question - why do you want to use a game engine to build a business app? Sure, you may have the toolset already, but just standard windows forms - better still ones that can be made in Visual Studio - are a tried-and-true solution, where the problem set is well-known, well-understood, and where most of the problems have already been solved somewhere, at least once.
In my opinion, just building a winforms app in Visual Studio to check your database would be a much easier solution to your client’s problem.
The big problem with using Unity for any kind of business app type thing is that when entering text into GUI.TextFields you can’t edit the text directly in the textbox. For any kind of form that has a bunch of textboxes and things to interact with, you need to do it in UIKit.
I wish Unity would offer built in native UI support. This would solve most of the above issues. In the editor, it can use whichever build settings you have to display a relevant ‘looking’ UI, or just a generic UI for all builds to be replaced upon publishing.
I understand of course this isn’t Unity’s target market. (Don’t bite my head off!)
This is just a wish list to enable you to use Unity for all multi-platform development.
Hey Unity, want to increase your market share? You can charge extra for this feature if you want! Ha, David, are you listening?
Thanks for the feedback people. I think I got the point now.
Ok, let me put it like that. This is not a “job” in the usual sense. It is kind of a project my friend personally created and aimed at the governmental institutions, town halls, state hospitals, etc… Let’s say, a new system for organizing bureau inventory. The thing must be mobile, because organizing stuff is a mobile work (they get barcode and picture of the inventory, etc). They’re still using stone age handheld terminals for it. I saw the machine and the program, they are both slow as hell. Most of the time you find yourself looking at a hourglass icon in a 256 color 640x480 screen. Also the database is not central, they are using Excel tables for it (yea lol). So, it won’t be a big issue to have a 2 sec waiting time. These guys are all +40 aged clerks and bureucrats. Tablet technology alone is like a sorcery to them. So, I don’t think they would even notice or care about small issues.
This must be for Android or iPad or both. So, I think I’ll make it on Unity. Xamarin is a popular tool, but it’s free limitations is really annoying and the actual issue with me is the WYSIWYG interface that Unity offers, I’m simply confused without it. I’m aware that it’s not professional, but well I’m not a pro programmer either. And I must use this opportunity as quick as possible.
So okay, I will make this on Unity. Now, the question is: Is Unity’s own UI gadgets are enough for this job? Or is there some extra assets that I can use? Someone wrote about a textbox problem, can you explain it please? Thanks.
Please refer to the bolded sentence - as Mada is suggesting, a web app will do just fine for this (you can even create a shortcut from the app menu for a web app, we’ve done it for something I’m working on at my day job). I honestly don’t understand - still - why you want to use a game engine to build a business app. Perhaps I am merely missing the point. I look forward to your elucidations.
As far as technical limitations go, a web app based even on an MVC architecture would be vastly superior to building some distributed Unity app, not only for security considerations but also for data assurance - with a central server that knows how to control the data, you can have far better control over concurrency, levels of access, and other necessary aspects for building a medical/government application.
As far as legal concerns go, a distributed Unity app - you still haven’t elaborated on what you’ll do about the Excel database problem - is a horrible idea. Even for warehouse control, in the medical and government industries, not all users should be privvy to all information in most circumstances. Assuming that you’re not providing users the ability to order against the inventory your app would be managing, you would want to hook into some kind of Employee database at the very least to ensure that even if a device is physically compromised, that an attacker still would have a very difficult time accessing the data and obtaining information that could be harmful.
If you refer to the second bolded part, I would like to tell you here and now that I am a career programmer - I work with MVC 4, .NET 4, CSS3, JavaScript + JQuery, and HTML5 on a daily basis (I’m trying not to think about the few ASP.NET projects I touch; we don’t talk about those.) I am not saying ‘you can’t do it’, I’m saying that there are very specific technical and legal reasons that you totally shouldn’t do it this way. Unity is simply not the right tool for this job, and these established technologies that already solve the problem set you and your friend are addressing will be a vast upgrade to ancient terminals, just as you intend.
If the problem is having to learn new languages, concepts, and solutions to existing problems, I honestly don’t know what to tell you. Perhaps taking this failure now, and after that the time to learn about what’s out there for business applications, your next venture would be more successful.
EDIT: Thanks, eskimojoe, I knew I was leaving out a technology or two!
@ExCx, Asvarduil is right. Also think about the target devices, are they going to have powerful devices that can handle Unity’s GUI system? Because Unity’s built-in GUI system, from all reports, can be quite abysmal on mobile. Learning web development with MVC 3/4 and .NET is quite simple, especially if you already know C# from using Unity (albeit .NET 4 is going to have some additional functionality).
+1, I had to take a VB.Net winform and turn into an ASP.NET application once -.- Most painful experience of my programming life.