Sunday, June 04, 2023

Mixing and matching systems

While working on yet another Traveller software project, my World Explainer (which, to be honest, should hopefully evolve into a full trade program but going to start small and build up) I made a small architectural change today. I pulled the explanation part out of the main program and created a service to do all that work.

Why? Because long-term I want to support more than just the classic Traveller, and the theory is that we can pass in not only the world to explain, but also the Traveller version. This makes that service independent of the rest of the software, or loosely-coupled in the software world. Which got me to thinking again (and pretty sure I've expounded about this at least once before) about mixing and matching in games, especially RPGs.  

Unlike traditional games which have a fairly hard-coded sense of rules, RPGs allow a great deal more flexibility which is both a great thing and a complicated thing that can be confusing. Of course, we're talking about homebrew rules here as well, as I doubt any RPG is run 100% on the rules (especially when the rules are confusing and can be interpreted in more than one way, as witness far too many rather heated discussions on various boards such as COTI). Anyway, Traveller, and its open gaming clone of various Cepheus games, have a lot of interoperability. You can run Classic Traveller games using Classic, Mongoose and Cepheus pretty much as-is. They are based on the Classic rules with some tweaking. 

The rules are just the "shared source code" so to speak that everyone starts with: we all need to have the basic shared starting point in order to play games. But then things can diverge from the RAW (Rules As Written) into things that work at your gaming table. And as long as everyone agrees with the changes, all is good. 

Other games systems are similar. I also run OSE which is of course 100% compatible with all the original D&D and AD&D games: I could take any of those early modules and use them pretty much as-is. The other major RPG I run (and when lucky get to play), The Fantasy Trip, requires a bit of work to translate other games to its rules, but in theory, old-school games would mostly work with just some basic changes to adjust stats and things like that. If you've read my blog, you can see how I translate things, which is pretty much strength equals strength, intelligence equals intelligence and dexterity equals dexterity. Things diverge for higher-level characters as most systems don't use strength as the hit points (though Traveller of course sort of does, distributing the damage across the 3 physical stats. At least one of the Cepheus games uses that as the starting point but tracks hit points as its own thing. It just does not "feel" like Traveller doing that to me!). But where the interoperability breaks is in the details: magic in TFT is a LOT different than the D&D/OSR game systems, at least for the magic users. Magic items work pretty much the same, but the actual practice of magic in TFT wears you down unless you have a staff with manna or a few powerstones. Interestingly, the game I'm playing right now is Delve but modified a bit. It's magic is sort of a cross between OSR & TFT: you can cast any spell you know but it takes magic points and you will run out. And the way the GM is running it, if you run out bad things can happen to you. Which is also a mechanic shared in a lot of games but it is always fun: things that have no cost or real threat just are not as much fun for me. And while I've not really played 5th edition, from what I've read they've really nerfed that so that everything should be balanced and the threat of character death is greatly diminished. Also why I don't like playing high-level games all that much. I'd rather a risk I can relate to rather than a risk at a less personal level. If that makes any sense. And now I need to see if I ever posted about my preference for low-level characters and games. Which for me Traveller really is: a gun will kill you possibly in a single shot no matter who you are. While you can of course get power combat armor, it is not something you wear walking around normally. Guess I am not a power player (and probably is because I am the same in real life: I really don't want to be in charge of a lot of things, yet sometimes I am and it is not a comfortable fit for me). 

Anyway, this also applies to software: we should be able to mix things up and use the best tools for the job. Just like the old adage, for a person with only a hammer, all problems look like nails, the same applies in software and gaming. If you only know 1 game system, everything you play is seen through that singular lens. Software development is similar: you don't know what you don't know. But you can leave things extendable or flexible enough to handle future updates.

And I've really drifted away from the gaming notes. And pretty sure this is a repeat of an earlier post from years ago. Sometimes I do wonder why I write these...

Ahh, but going back to games and one of the first things mentioned here: loosely coupled. I've never played GURPS but that was designed to be a universal game system (and it is in the actual name: Generic Universal Role Playing System). Like a lot of universal systems, it is a jack of all trades. And like a lot of programming systems (Java, .Net, heck, even javascript) it can do a LOT of things. But sometimes you want a system that is built specifically for the thing you are trying to do, or the game you want to play. GURPS is a loosely-coupled system that can play any genre. In theory, Traveller is as well (heck there is at least 1 fantasy game built on the Cepheus engine  (Sword of Cepheus). But if want to play a Star Trek game, the actual ST RPG by Modiphius would be a better choice as its system is built specifically for that IP. 

Anyway, just another Sunday blog, and welcome to June.

I've also figured out the testing part in .NET and started adding tests to my world explainer. Took a bit as I switched targets somewhere along the way, and the test suite needs to match targets. In this case. .NET 7. And I remember writing code in .NET 1.0. Times have changed! 

I am working on the trade codes next, and then may see if (1) anyone is really interested in it over on the COTI boards or here, and (2) if they would like an Android version (and if so, I'll need to see about getting permission to publish this from Marc Miller). It would be free of course. 

If anyone here wants to run it, I *think* I can package this as a single .exe for Windows at least. And the source code is of course available in my Github repo so in theory you could download & run it yourself. If you want to do that and need help, also let me know & I can write a tutorial here for doing that. You will need 2 things: a free Github account (and not even sure you need that!), and Visual Studio (there may be other options but for me that is both free, and as per this post, designed for editing & compiling .NET programs!)




2 comments:

Baron Greystone said...

If you get your program to the point where it's a simple Windows install, and I can use it for my Classic Traveller gaming, then I'd be grateful and happy to give it a spin!

Craig Oliver said...

in theory, if you copy this directory to your system there is a install.ps1 script that should install the program and all the .Net stuff you may need. This is a Windows installer, and it also includes a self-signed certificate from me. It does ask to install that certificate and of course, to make changes to your computer (as do all installers).

https://1drv.ms/f/s!AgjJYJOsJH7WhpVO6G3pn6CF7gcT0w?e=NvPgDn

you may also want to turn off data collection (which I am not using, and I really should turn it off myself); see https://learn.microsoft.com/en-us/visualstudio/ide/visual-studio-experience-improvement-program?view=vs-2019

While I know me and trust me, and this did work on my machine, I am also a developer in real life, and while I say you can trust this, and we've talked a fair bit back and forth over the years, just letting you know at this is a self-signed application. I'll be getting a real certification from the MS store at some point assuming I publish there.

also, still a WIP as I've yet to finish the actual trade code part. But it would be cool if someone else could actually use this!

thanks!