Devlog #9: Bullet Pattern Engine

In this episode I introduce the first iteration of my shoot'em up bullet pattern engine written in Swift as well as a bunch of Level Editor enhancements.

Devlog #9: Bullet Pattern Engine
Johan Steen
by Johan Steen

In this episode I introduce the first iteration of my shoot'em up bullet pattern engine written in Swift. Also I have got a few new Level Editor enhancements implemented.

Bullet Patterns

Loosely based on BulletML I've built an initial implementation to handle bullet patterns in the game.

BulletML has many great ideas how to handle bullets but also a few shortcomings. I've made a more modern implementation, fully Swift based and without XML driving it.

I decided to try to keep the bullet engine separate from the rest of the game's codebase and make it completely independent so I can reuse it in the future. That also gave me an excuse to introduce myself to Swift Packages in Xcode.

If I polish it enough I'm considering open source it in the future.

Level Editor

When it comes to the level editor I've implemented a bunch of quality of life enhancements.

Multi select

The most notable is multi select. This really makes all the difference in the world compared to previously when I had to move the entities one by one. Quite a game changer. Now I've a tool that's getting closer to actually be production useful.

Design Overlays

I've also implemented design guide overlays. I used to love these kind of guides when I worked with LightWave 3D in the past as well as Adobe Lightroom these days. So I created a bunch of common ones using CGMutablePath together with SKShapeNode to help guiding me with placement when the final level designs begins.

At this time I've 8 different guides implemented to utilize.

  • Crosshair
  • Grid 1
  • Grid 2
  • Rule of Thirds
  • Diagonal
  • Triangle
  • Golden Ratio
  • Golden Spiral

Game Devlog

This is the ninth episode of my devlog following the progress of my indie game, which is a top down shoot'em up, that I am coding in Swift on top of the SpriteKit and GameplayKit frameworks.


Discuss this article

The conversation has just started. Comments? Thoughts?

If you'd like to discuss any of the topics covered in this article, then head over and hang out on Discord.

You can also get in touch with me, and keep up with what I'm up to, on Twitter or Mastodon.

Sign up to the newsletter to get occasional emails about my game development.