So far, recording and editing these Love2D YouTube tutorials is fun, but it sucks up a good amount of time. This is especially true when you are doing coding videos and you aren’t exactly sure what your final product is going to be. I’ve found what seems to work best is sitting down, figuring out what I want the episode to be about, writing the code for it and making sure it works, then re-creating that while recording. This essentially means re-writing all the code I just wrote again, and sometimes I’ll change my mind in an episode and write parts of the code in a completely different way. It’s a lot of effort, but it is nice to have a “released product” video or two by the end of the day. I have even finished several episodes and uploaded them only to rethink what I had done and scrapping them. Last week, I also put the code for all the episodes I’ve created to date to a github repository. That took a decent amount of time as I didn’t do a great job of keeping zips of the code for each of the videos, so I had to recreate several of them from scratch. I also improved my VSCode plugin for Love2D by adding the ability to open a webpage for the love2d function the cursor is on. My journey with Love2D has been enjoyable as it is a different beast from Unity 3d, but I will be working on some C# goodness this week as I will try to participate in the 7-day rogue-like challenge 2017. We’ll see how that goes…

3rd Edition of programming in Lua. The 4th edition is also available .

I’ve been on a mission lately to find something to use for game development other than Unity3D. Don’t get me wrong. I enjoy Unity development and C# is one of my favorite languages, but there are a few things that I don’t like about Unity. More than that though is the desire to learn something new. I decided to check out alternative game engines that use Lua (another of my favorite languages).  What I’m looking for is an engine that gives me at a minimum support for building binaries for: Windows, MacOS, Android, iOS (bonus points for Html5 and Linux).  Defold, Corona SDK, and Love2D were my first considerations. I’ve known about them for some time, but hadn’t taken the time to mess with them.

Lua Game Engines (the big boys)

 Windows DesktopMacOSXLinuxAndroidiOSHTML5
Love2DyesyesyesyesyesYes with love.js (Not up to date with current Love2D version)
Defoldyesyesyesyesyesyes
Corona SDKyesyesnoyesyesno

Below are just a few things I liked/disliked about each of the engines. Note that these aren’t exhaustive lists by any means and are definitely missing things as I have not yet delved as deeply into any of them as I plan to.

Defold

The Good:

  • Component based
  • Nice message-passing system to pass data between GameObjects
  • WYSIWYG editor that does some of the janitorial work for you
  • New V2 editor in development that looks really nice
  • 3D is supported and there are plans to improve it
  • WYSIWYG particle system editor

The Bad:

  • Joystick support isn’t very good. At this point XBOX360 controllers are all that’s supported on Windows :/
  • The IDE is basically a customized version of Eclipse which I do not enjoy using at all

Corona SDK

The Good:

  • Very quick iteration time. You write code, save the file, and your changes are shown in a running project almost instantly.
  • Support for ‘instant’ development on target devices as well (haven’t tested this)

The Bad:

  • No 3D
  • The weakest cross-platform support
  • Just a few Windows-based joysticks supported (XBOX one, 360, etc)

Love2D

The Good:

  • Uses SDL under the hood for great cross-platform support
  • Strong community and active forums
  • Because of SDL, the joystick support blows the other two out of the water
  • Very quick to get something up and running

The bad:

  • Some Love2D library developers think it is funny to name their libraries with suggestive names (because the framework is called “Love” 2D). That’s immature and frankly, it is somewhat of a turn off.
  • Doesn’t provide and WYSIWYG tools and you must do all the lower level plumbing code yourself. Screen scaling, cameras, sprite batching, particle systems, etc.
  • No official 3D support

I have a side project in mind involving up to 4 simultaneous players which means joysticks are a must. I need joystick support. Good joystick support, and if you read anything above, you’ll know that Love2D has the others beat by a mile in this category. With Love2D there is even a built-in function to load a special joystick mapping file (courtesy of SDL) which describes any joysticks that are not supported by default. Very nice. So with that in mind, I decided to begin trekking dont the Love2D path to see what kind of progress I could make. I’ve created a few tutorial videos on Love2D the first of which can be found here. Depending on when you read this, there may be only one, but rest assured, there will be more. I’m enjoying using Lua to create games with, but I’m still not ready to jump the Unity3D ship completely. For now, the Lua-based game engines will be my side projects while my main projects will be Unity3d.

I’ve been working on my asteroids VR game which has changed shape a couple of times already. Google has now opened the submission of Daydream apps to all developers so now we’re seeing more Daydream apps come online every day. My strategy was to get something done and released to Daydream before a glut of VR games saturated the store.

An idea for one of the scenarios in the game. A thief ship.

I still might be able to accomplish that, but I’m currently having difficulty as to what this VR game should actually be. What is the core game play mechanic? What are the rewards? Should there be locked scenarios? What kind of scenarios should there be? What should the user interface look like in VR? These are just a few of the numerous questions that have plagued me during this project. Trying find an answer to each of these and put it into code can at times be a long process. Even after you finish implementing something it doesn’t feel like you have accomplished much.

“If I could only code faster.”

“If only I had a better idea of how to implement feature A.”

“If I had half the talent of [big name game developer] I could already have this done.”

These are a few of the things that have popped into my head at times.  Here is the deal. Game development is hard. The ideas may come pretty easily and coding up a prototype to test the idea might not take too long. However, once you’ve settled on an idea and begin to tackle coding all the other stuff (user interface, save/load system, upgrades, rewards, in-app purchasing, web-site design, checks to make sure a user doesn’t crash your game), you begin to feel the weight of it all. As a single-person indie studio, you have to do all these things yourself not to mention sound design, music, marketing, building, packaging and releasing the game to x platforms.  I don’t care who you are. That’s a lot of stuff for one person to do. What’s more is you also have to resign yourself to not expect much (or anything) in terms of response to your game once it comes out. There are just so many games on all the stores now. Many of them free to play, but not all good. Most are junk, but it doesn’t matter because in this age of plentiful games, marketing is king. If you don’t have serious money to spend on it, you probably won’t get very far.  As a result, implementation of the answers you come up with to these questions that come up can become quite a slog.

Experiencing this ebb and flow of motivation and discouragement on whatever ‘main’ project I happen to be working on, I’ve come up with a schedule for my week. It’s designed to not hold me to that slog all day every day. I get breaks from the main project to go and create prototypes of other game ideas, etc. It also includes some production of programming tutorials as well as steaming game programming, and posting to this blog weekly. You’ll hear more about these other endeavors as they manifest. Until then. Try to stay motivated.

Social media & sharing icons powered by UltimatelySocial