Planning a Level Editor for our 2d Game EngineHello everyone,
I finally arrived to Nice Ville, France. There has been some complications with my residence for the next 6 months which I hope to resolve tomorrow! , appart from that I’m happy to be here and excited to work on an interesting topic! Anyway, I’ve been a bit short on time and also very tired ( 13 hours flight to Madrid from Santiago, and then 2 hours from Madrid to Nice, and +6 hours of time difference with Chile!! ).
For this post I want to discuss/(public brainstorm) about how would I prefer to work with a Level Editor, and mainly about the target platform for this tool. To be a bit clear, we have a simple internal 2d Game Engine at Gando Games… we are actually planning to Open Source it, but with all the great 2d Game Engines currently available we’re not sure about it.
A Level Editor, even in a basic stage, can provide a huge boost to productivity for repetitive tasks like level design, prototyping and Game Entity creation. Our rather simple engine is quite focused on fast prototyping, it has pretty good scripting support using Lua, mainly as an option to describe Game Scenes, Entities, and other game specific elements. This is all very cool, but I’ve been discussing with Jorge (front-end Engineer), and he agrees that a Level Editor could could speed up the whole creative process.
I’m just thinking out loud here and I would really appreciate feedback on this matter, our main concern now is the level editor target platform. What I mean with this is that, yes it’s cool to have a level editor on an iPad/iPhone, but I think I’m far more proficient using my MacBook/Mac Mini to create a level, still this has lead us to think about two main alternatives:
- Native Mac App
- iOS App
I will try to discuss about each option pros and cons:
Native Mac App
The idea here is to make a Mac App, that could describe the Game Logic ( Game Entities, Scenes, etc… ), and that could preview the specified game logic on the Mac and also push it to an iPad/iPhone in order to test in-device.
- Comfortable to work with for the team, so far everyone uses a Mac here.
- Fast. Being a native App, performance shouldn’t be a big concern.
- Usability. I think I can achieve better usability for this kind of CAD tool with a desktop application, but I would like to hear your opinion on this.
- Native App. What if we start developing for another platform in the future, should I really care? For now we are 100% iOS, and we don’t care for Android Games yet… still you can develop Android Apps on your Mac, but what if we have to develop on Windows? (I hope I don’t though!).
- Another point to take into consideration with a native app, is that since it’s not natively running on the device, it could take a bit more time to preview changes in-device etc… still this time could be greatly reduced by pushing the data to the device via the Network.
- Development time, I think it would take more to develop a native OS X application than an iOS application since I would have to create the layer of communication between iOS and the Mac. Also, currently our small 2d Engine is iOS only, so I would have to add code in order to render properly on OS X.
- Works in-device so it’s very simple to preview changes.
- Faster development process, since everything to visualize the changes is already there, I would just need to expose a simple interface to re-load Lua logic scripts and program the editor GUI, not a lot of new code is needed.
- I think that from a usability point of view, this application is more like an “expert tool” … a lot of hotkey usage is expected etc. Our Lua scripting layer does also support to define a Game Entity behavior by actually programming in Lua… I think a desktop computer could be more suited for that kind of task, which is actually Lua programming.
- What if we add Android to our development process ?, if the Application is iPad native, I would then have to program some sort of communication channel between an Android device and the iPad, creating a similar situation than with the Mac Application.
Of course I haven’t covered everything here, though writing this post has made me realize several things already! ( thanks iDevBlogADay! ). We have already considered writing Web Application… feedback on this matter is totally welcome.