Upon hitting the rocky shores of reality with the dawning realization that I did not want to write everything from scratch, I searched for alternatives.
There are the ones that people might be aware of:
And some others that are similar but less well known. My main criteria was that it had to run on macOS, and preferably wasn't either C++ or C#. 1
That set of criteria left me with SceneKit.
So at the end of June 2022, I decided to write-up my plan and start seeing where that would take me.
Kekouan
Grand Plans
I think I have accrued enough knowledge and hubris to attempt to create a vision of something and then attempt to execute that idea.
I’m going to try to attempt to create a game similar in substance to id Software’s 1992 Wolfenstein 3D. The original Wolfenstein 3D was broken up into episodes, the first one had 10 levels and I believe each episode had a “boss fight”.
It had 4 weapons:
• Knife
• Pistol
• Machine Gun
• Chain Gun
In the first episode I believe you only encounter 4 regular enemies plus the “boss”.
It also featured sound effects and music, which I will need to consider as well.
Things that I will consider to be “out of scope”:
Networking/Multiplayer
Verticality
Technical Aspects
I’m planning on creating this using Apple’s SceneKit framework. This is conceptually similar to the sorts of systems offered by Unity and Unreal Engine, in that it offers you things like:
SceneKit is a high-level 3D graphics framework that helps you create 3D animated scenes and effects in your apps. It incorporates a physics engine, a particle generator, and easy ways to script the actions of 3D objects so you can describe your scene in terms of its content — geometry, materials, lights, and cameras — then animate it by describing changes to those objects.
Plot / Theme
I don’t really want to re-hash the themes/plot to Wolfenstein 3D. I’ll fill this in later, perhaps.
Style / Substance
I’m not sure assets I have for this that I want to use, or what I’ll be able to procure or create. I’m going to focus on prototype things for now.
Goal
So what I’m trying to create is a single-player first-person shooter that has ~4 weapons, ~4 enemies, a boss, and ~10 or so levels. Ideally using assets I have either created myself, or licensed. I don’t really think there’s much in the way of demand for something like this as a commercial endeavour, but it could be something I toss in a portfolio / release for free.
And lo, this is what you get with the default SceneKit project:
The jet model just rotates in space, you control the camera, and if you click on the jet it briefly turns red and blinks for a moment. Humble beginnings, but it has a physics system, sophisticated lighting/shadows and support for a surprising amount of 3D formats.
Although there are now Swift bindings for Godot↩