Moving Forward with Spite #65
greenstack
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Hello again!
It's been a while since I've worked on the Spite Framework. After taking the (unexpected) break, I've come to realize that the scope of the framework has outgrown what it really should be - a framework for helping develop turn-based games, not an engine for turn-based combat.
Here's the thing - I've only done prototypes of turn-based games. I've never taken one from start to finish for a myriad of reasons (most recently, burnout). But even in those prototypes, I saw a lot of common code being formulated. (How many times have I re-written a class to track a character's HP?) Because of that, a lot of what was put into Spite was just a lot of "good" ideas. And some of them, I think, are good in concept, but because I didn't develop these concepts for a game, they came out... frankly, not good. Generics everywhere where I probably should have figured out how to use dependency injection instead. A really tight API - not tight in the concise and easy to use way, but tight in the "I can only do things one way" kind of way, and that ended up being really restricting.
And wouldn't you know it, but working on an actual game with Spite 0.4.x showed me that Spite wasn't doing what it was supposed to do. As I developed the prototype, I felt like I was fighting against the framework. Even so, earlier this week, as I was thinking about how to come back to that game and get it rolling again, I began thinking about how to solve a common issue in turn-based games... I found myself having all these "good" ideas for this "amazing" API to help manage these things using this and that. And then I realized that I'd fallen into the trap again - designing an API very limited plans to actually put it into use. And, as I've hopefully gotten across, that leads to an API that quite frankly, isn't very useful.
Problems With Spite
These are some of the problems I feel like Spite had without getting too in-depth.
Arenaconcept. Everything in Spite depended on it. Maybe a single entry point is a good idea, but right now, I'm against it. I feel like this single entry point was far too limiting.What does this all mean for Spite then?
It means that, barring the stat types I'd written for 0.4.x, Spite's development is starting over from scratch. I'm not abandoning Spite. It'll still be C++ and I'm still planning on supporting as many C# environments as possible (within reason, of course). This is the approach that I'm going to take with developing Spite (with some liberties from time to time, of course):
To this end, I'm pushing the
0.5.x-devbranch really soon. You'll notice that the branch is very slim compared to the older branches - and this is by design. While I'll leave the old branches up for a while - there may yet be actually good ideas there - I really feel like starting with a clean slate is the right way forward to make Spite the best it can be. (That said, I'll go ahead and leave the stats classes intact - I never want to write a class to track HP ever again.)Contribution
If you're interested in the concept of Spite, please help me develop it! Since Spite is very new (again), there are a lot of decisions that will need to be made, and I value the contributions of others as well. For now, I think the GitHub discussions and issue tracker are the best place to discuss the development, but if there's enough interest, there may very well be a Discord server in the future.
One Last Thing
I made a mascot for Spite!

Say hello to the Spitegeist.
Until next time, be safe and have fun coding!
Beta Was this translation helpful? Give feedback.
All reactions