As with many people, I’ve had a struggle with settling on an engine to use when making a game for the first time.
Over the past few days, I’ve struggled with some things in SpriteKit such as the lack of any form of UI elements (no buttons, scroll views etc).
I took some time and went back to look at some alternatives such as Unity, Godot and Cocos Creator. Each has a decent amount of strong points and difficulties for me, and I thought I’d list a few here:
- Excellent support
- Great Community
- Flexible editor
- Great crossplatform support
- Nice Gui system (if not a little tricky at times)
- Can be unnecessarily complex
- Can be difficult to add platform specific functionality
- Tailored to 2D game development
- Choice of scription language
- Great Community
- Open Source
- Documentation can be someone patchy
- As with Unity, platform specific features can be difficult
- Editor can be cumbersome
- Built on Cocos which has been around a long time
- Excellent performance
- Decent amount of 3D support
- Nice Scene /Script editor
- Near non-existent community
- Not as many features as other engine
In the end, I decided that sticking with SpriteKit was the best course of action because although it lacks any tradition UI system, there are plenty of other benefits.
Firstly, I feel learning Swift has a better long term set of benefits should I choose to stick with app development. There is much better support in Swift/SpriteKit for GameCenter and the GameKit Turn Based Matchmaking.
Untimalety, I see a much better future for the project using the toolset I’ve chosen and although there is little to no chance of using these tools to make the game crossplatform, this is not a goal I have so it has no impact.
On a separate note, I’ve started commissioning some artwork for some the in-game powerups. So far, I’ve come up with 4 powerups and I’ve been happy with the artwork that’s been created.
In terms of development, I’ve been trying to create a wrapper / helper over the top of GameKit and it’s been working nicely. There have been several issues I’ve come up against in terms of passing data between players, but nothing that has caused me any long term issues.
I’ve been able to run simple tests between two devices and all works as expected. There is a lot of code clean-up to perform, which will be a focus over the coming days.
Dragging sprites worked out to be a lot simpler than I initially thought and dropping sprites to end a players turn was easy (checking location upon ending the drag process to make sure items are dropped in the correct locations).
Until next time