Castagne Engine

The Open Source Fighting Game Framework

Forum - Discord - Youtube

Another estival update! If the text before is dry, it’s because you haven’t interacted enough and I don’t have anything to change.

Bit of a delay with the last one but there’s a good reason: i forgor

Beginner Vision

Big subject, and one we actually talked a lot about in the previous update on docs! There’s still a lot to say, and this time I’ll focus more on the beginner focused parts and how they are handled.

Castagne is a software meant for experts, but there’s not many of them and you need a path to become efficient in Castagne. As such, the previous definition of beginner was something simpler: someone who doesn’t know Castagne yet, and might be less technical in general. However, in practice, that’s not the correct definition to use, and the people coming into Castagne have been quite varied. Let’s review some assumptions on beginner’s knowledge:

  • Do they know how to program? Mostly no! There’s various beginner profiles, but for most of them Castagne is the first time they actually encounter programming. This was already in mind, although knowing how to program is always a plus.
  • Do they know how to use Godot? Surprisingly, that’s also a mostly no! People come into Castagne from a direct search. The reliance on Godot is both a boon and a curse, as it makes the wall either lower or higher depending on what the other person already knows.
  • Do they know fighting games? Very surprisingly, also mostly no! While most have the general concept of a game, game knowledge is very varied. A lot of new users won’t know what frame data is, and some of them haven’t figured out many basic properties of attacks. That’s definitely an issue in game making!
  • Do they know how to draw/model/art? Mostly no, but there’s two parts to this. One is that basic ability, on which the surprising part to me was that instead of using the in-engine resources, most people went instead to grab sprites online from existing games. The second part is the workflow: most have no idea of how their art needs to adapt to gameplay constraints, or how to actually integrate it such as how to make spritesheets.
  • Do they know how to use computers? Alright this one sounds mean, but I didn’t put it in to dunk on people: surprisingly, some of the beginners are lacking basic computer skills, yet find out about Castagne and try to use the software. I’ve seen several problems on the discord support channel that are vey much caused earlier in the pipeline, but it shows that the software is becomine more and more welcoming.

Sidenote, I use “surprisingly” a lot in these because I haven’t been a beginner in gamedev for a long while, and my journey was different enough that I don’t have proper reference points. I learned programming and 3D modeling through basic curiosity and looking online, before I even learned English. When I started gamedev 5 years later, I already had those core skills available so it wasn’t that big of a climb, and soon after I got a short internship at a gamedev studio so I started using Unity back in 2011 or so. I still have that propensity to not be intimidated by walls of knowledge even outside of my field, so my first reaction is not “give up” but “read more”, which definitely puts me outside of most users afaik, which makes it harder to project. Maybe you already guessed who would use Castagne and the level of beginners, but I did not lol

The question then becomes, how far should Castagne go to support beginners? Each one has their own profile, so different aspects are needed, and some decisions can impair the software for other purposes. So let’s put in a guiding vision: Castagne will always prioritize the expert experience and efficiency over the beginner one and prefer teaching and rising the level to limiting or over-simplifying. This doesn’t mean excluding beginners, but there’s a lot of ways you can make something simple by making most choices for the user, or making the day-to-day workflow worse. That’s a pitfall I wanted to avoid in Castagne: Castagne is not training wheels, it aims to be a supremely strong option on the ways it focuses on.

This means that Castagne’s approach is to teach, which takes time and effort both on Castagne’s side and the user’s side. As such, this brings a fundamental limit to Castagne’s user: the user must be willing to learn. If someone just wants to quickly and casually do a fighting game, Castagne is not the software suited for that, and we shouldn’t use resources to get them. The decisions needed to support that user are going to make the software worse for its target users. Another constraint is going to be you need to know how to use a computer. If you can’t open Castagne, you’re going to be immediately lost as soon as the words “import assets” appear on the screen. This already puts some limits, but it still leaves a lot open. Who should Castagne reach out to?

I believe that Castagne should try to reach out of complete beginners, in part because it’s who it’s attracting already, and because it’s good software that is not a trap. This means that people will be able to learn Castagne and be able to keep using it, which will give us better games, and a more skilled community, so that the discussions can also raise in level. With the new vision realizing that people won’t look outside of Castagne, the realistic option is to have this handled in part by Castagne. Not fully of course, Castagne is not the place to learn about blender or sorting algorithms, but it shouldn’t leave beginners high and dry. Having this in-engine will also mold the basic beginner to someone that can already understand more and is more aligned with Castagne’s workflow. So, how can we do this?

I propose looking at it through a framework of three skills: Programming, Art, and Design. Each beginner can either have a basic level in that skill, or not have it, and measures can be taken. That’s on top of well, teaching Castagne, it’s more a sort of soft prerequisites that can be accomodated for, especially in the first tutorials. We’re going to assume that once you’re out of the beginner / advanced beginner stage, you’re able to figure stuff out on your own because you have that anchored basis, and can look up tutorials. They are pretty independant, so while that means there’s 8 beginner profiles, we only need to think about those axises independantly.

  • Programming: A user that can already program would rather focus on an efficient language specification and examples. This works well with Castagne’s flow as it is easy to see how efficient it is once you read code, although some programmers are easily intimidated (there’s still many profiles).
  • No Programming: Code tends to be a major mental block, and it’s likely the single most polarizing thing in the engine for beginners: those that read will say the engine is nice, those that get turned away will say it’s super obtuse. This is the core so it’s not an easy fix, which is why there’s a visual programming interface coming up. A big difference, is that this one respects the user. Many visual programming interfaces are condescending and unsuable above intermediate level. We’re not doing that here, we’re using Castagne Script’s idiosyncraties to make a real interface that I myself would also use and doesn’t have any limits compared to code, that’s how we actually respect the user’s intelligence and not trap them.
  • Art: A user that knows art usually doesn’t know how to integrate it, and also won’t read godot’s docs apparently. There’s two subcategories: sprites, which are favored by beginners and have no standard workflow and low technical knowledge, and 3D which have more standard workflows but are also much more complex (and still misunderstood by most, as it’s quite a tricky part to be honest). The solution here is to have sprites handled more directly by the engine, as the 3D people will naturally have more tolerance to the technical and we can rely on that standard workflow, while also being hard enough that it’s not realist to have it in the engine. This will likely cover most cases.
  • No Art: While it might seem it’s less common, there’s many users that don’t have art skills coming into Castagne. Some are programmers, some are designers or general beginners. Some want to rip sprites online and that’s their problem, I’m not going to add tutorials on how to steal assets. The existing solution in engine is to use the example characters and their animation library, which I think is a good idea, however the current implementation is lacking. The animations are too static, they are hard to visualize, and the UX of example characters is bad, as modification is prevented by default. I believe this will be solved with just a few key changes: the new animation system allows in-engine alternation of both 2D and 3D animations, and some visualisation tools will help the rest. Making the example characters more dynamic and able to be added after the start will allow experimentation, and with that I expect many more people will be getting their start with this library.
  • Design: Users that already know about fighting game design tend to already have an idea in their heads. I don’t think anything needs to be directly done for them at the very early stage, what they are looking for are specific mechanics and their adjustments. This is naturally covered by the mechmods and the more granular tutorials and help me button.
  • No Design: This is tricky, because there’s also no coherent terminology. Infil’s dictionary does help, but the concepts don’t always have the same names from game to game, and don’t necessarily link up the concepts. I believe there’s two parts to this: one the one hand, you need to define terminology for everyone, so that should be part of the general curriculum. On the other hand, there’s how to use that information, as people might not know how a move being positive will affect the game. This is tricky to teach, as it’s much more art than science, and a young art specifically. I believe this can be filled out enough through a very quick explanation when the concept is introduced, while more advanced used can either be relegated to a “how to design fighting games” section (low priority) or community tutorials.

Adding some branches to the onboarding tutorial specifically could help direct users, and some categories focused on different lengths and how much they are guiding you through things. This is definitely a part that will need iteration. A risk with that is having so much information that the tutorials themselves become intimidating, but at some point you gotta cut people off: these would not be able to figure out the software without them, and I would much prefer a userbase that is able to find how to do things properly to having the forum be a collection of quick hacks.

Another point to keep in mind in beginners that skip tutorials. Those that skip tutorials are handled by the natural documentation and design of Castagne, as well as the Help Me button if they don’t ignore it. No additional effort is going to be made for them: they want to discover things by themselves, so they will be on their own beyond showing them where the tutorials are on first startup. As mentioned earlier, users that don’t want to spend the effort to learn Castagne are not targetted by the software.

I think that’s a good framework to think about that, and a good general plan. Castagne onboarding, albeit flawed, has managed to bring quite a few users up to speed. It’s part of what allowed Castagne to push beyond its target audience already, so an expansion in that early net should help much more people find their first foothold in the engine. After that, the additional tutorials mentioned in the other updates should help raise the level, now that the initial funnel will properly bring people to the level needed to use it. This will ensure the userbase is more advanced and numerous, which will enable development to go further and better.

Also, I’m planning on using the Castagne characters during tutorials to make them more palatable. I guess this makes it less corpo (which is not a bad thing), but I guess I’m in the zeitgeist of the new generation of open source mascots. Just need to add an anime girl somewhere instead of my puns on francophone BD.

Do you think I missed a part of the beginner experience, or that there is a better way to handle them? Next time, I’m going to speak about communication again, but in the other direction: from users to me!

Try the Godot 3 Version now!