My game development studio, Witchcult


#1

Hello Rustaceans!

I would like to announce to you my own little game studio that i like to call Witchcult!

I’m currently in the last few months of my education as a game programmer where I’m working on my first game through this little studio of mine, working under the mentorship of a game industry veteran.

Now, the reason why I’m posting on this forum is because I’m writing my own game engine, and of course that engine is written in Rust!

So feel free to follow me on social media, and maybe even consider becoming a patron to help keep me working full-time and independently on my game and engine after my education grant ends in a couple of months! :slight_smile:


https://twitter.com/WitchcultGames

Thank you very much for your time.


#2

Exciting!
Could you share some details about the tech stack and the architecture of the engine?


#3

Absolutely.
Although, It’s not that much to talk about really, because right now the engine it self is just a library crate that I have written to supply myself with 3D rendering capability through OpenGL ES 3.2 via the gl-rs crate for rendering function loading and the glutin crate for cross platform window creation and event handling.

Other then that I have built some utilities for saving and loading user settings, a state stack for popping and pushing different game states implemented via a simple trait, a simple tool for converting conventional 3D model files to a simple binary format that the game engine then can load and a prototype of simple internal messaging system to allow different parts of code to pull and push information between each other, such as the settings manager automatically saving settings when they are changed.

I have also implemented a basic version of the GJK algorithm for collision detection, and upon that I have based a simple physics system, but this only works in 2D scenarios as of now, since I’m still having some problems with extending the GJK to three dimensions. :blush:

Ohh, and I have also built the underlying maths library for working with 2D and 3D graphics, things like vectors, matrices and quaternions, and a simple pseudo random number generator based on the Xorshift128+ algorithm. :slight_smile:

So absolutely nothing spectacular, but it serves it’s purpose and I really enjoy developing it and I love to have such intimate knowledge of my most used an crucial tool when developing my games, namely the engine.

So not that much of an “architecture” as of yet, but on the horizon, and the two next big features I want to add to the engine is audio playback, and I’m currently looking to PortAudio for implementing this feature, since it is cross platform and has a rust crate wrapping the c library, and then there is the issue of implementing a good Component Entity system for the engine, something that seams to be something of a hassle to implement in rust, especially if you want to implement it via data oriented design, as I do! :slight_smile:

Also, in the somewhat near future, I will probably upload the source code to git hub under an open source license for all to see and mock, but right now I just want to sit down and work on my first game and not worry about maintaining a publicly available open source project. :stuck_out_tongue:


#4

Very cool! But why go at it alone? Especially when, as you say, you’re eager to get started on the game itself.

Have you looked at Amethyst? It’s an actively developed active project with a very capable team.

They’ve already solved a lot of the problems you’re currently pondering.


#5

Yeah, I’ve had a bit of a look at Amethyst already, and a couple of other Rust based options, but since this little project of mine also Is part of the final stages of my education as a Game Programmer, building the engine on my own was something I wanted to do from a purely educational point of view.
But other then that I also enjoy building the basic stuff for my game myself, things like the mathematics library etc.
And I also find it to be a big motivator for me personally to have a very intimate knowledge of my main tool, the game engine, and since my requirements from the engine are quite simple when all I said and done, I felt that the time spent implementing a simple engine, and automatically gaining a very intimate knowledge of said engine while developing it, would be worth it, especially when considering the time it would takes to learn how to work efficiently with someone else’s engine. :slight_smile:


#6

Sounds very cool :slight_smile:

Do you have any plans to open source your code? Private code is still fine if you go that route but it could be a great asset for learning. Either way, if you made blog posts about your development, I know that quite a few of us would be interested in reading!

Good luck.


#7

Yeah, I will probably put the source code for the engine up on GitHub at some point, when I have had the time to cut down on a few of the “shortcuts” that I have taken that other might not be son keen on! :wink:
And right now I don’t want to have to deal with maintaining a publicly available Open Source project.

I probably won’t open source the code for the game it self though, but I do plant on some sort of blog to document the development of both the engine and the game, and I am actually planing to set up a live stream to allow those interested to tune in and follow along as I develop the game. :slight_smile:

But before any of that I need to put a couple of week more into the first prototype of the game before I start to really push for getting people to following a stream or support me through Patreon. :slight_smile:


#8

Ok, thanks for an extensive reply. Looks like you are going the route of re-implementing everything yourself. There are plenty of established (and whatnot) libraries for graphics, math, physics, ECS, and so on.

Doing from scratch is a fine learning exercise, but I don’t see it being the most straightforward way to actually making games, so the announcement of a gamedev studio appears to be slightly off now…


#9

Well, that might be so, but on the other hand, I have been working for months already, and I have been developing the engine alongside my game to a great extent, and I’m getting very close to the point where I will release a very early build for people to test out, so I have already done most of the basic work for graphics, maths, physics ECS, etc.
Not saying I’m done with these things, but I have a solid foundation for all those parts.

And, as I said before, this “Studio” of mine is actually a part of an education, an education that has had as its main focus the building and development of game engines with the goal of a career in the “AAA” game industry where many, maybe even most studios, actually use their own in-house game engine.
It is also an industry were intimate knowledge of the individual parts that make up a modern game engine is highly appreciated from an optimization viewpoint, even when using an engine such as Unity, Godot or Unreal Engine.

So just going with a ready to use engine or piecing one together from existing libraries was never really an option since this work will be graded from the perspective of that educational goal, and building the engine is really the whole point of that education.

But yeah, I might have jumped the gun a little by announcing a game studio last month, but It was during the holidays and I didn’t really have much time to do any serious work on the game and engine, so I decided to spend the few hours I could find here and there to start setting up and preparing for announcing my studio since I’m hoping to continue working for my self after the education ends in a few months.

I have not made any announcements anywhere else since I’m not really ready to show of my game just yet, I’m planning to do so in the coming weeks, but I decided to announce it here a little bit earlier since this was the official Rust user forums and there’s quite a small number of people that frequent this forum compared to other venues of announcement, and I figured that most people here would not be all that interested in the game itself anyway, but would find it interesting non the less, and It would alow me to test the waters a little bit before announcing anything “big” on my Facebook page for example, and before trying to generate some real interest for what I’m doing. :slight_smile: