Sunday, February 15, 2026

Traveller System Update 29 - finished data entry and refactored details

Yes, I had a bit more time today as both my regular gaming sessions got cancelled. Life and family happens. And I wanted to get the software to a better place than I left it yesterday. And I needed to get off the couch. I did finish putting in the world details, and then I refactored the planet controller. I was specifically calling the trade classification service which takes in a planet's UWP and spits out a list of trade classifications. We really only use the name, and, as I mentioned in the last post, we're going to be adding more planet details beyond the trade classifications. Such as the world details for gravity, surface area, etc. 

I added a "Planet details service" that will return a dictionary, basically the title and a list of strings. For our trade classifications, dictionary is "Trade Classifications", list of trade classification names. But it will also return (eventually) things like "World details": "gravity 1.125", "escape velocity 12 m/s" and so on. I updated the view to basically take that list and the "title" is a <h5> header and then list the details. 

This means we can add whatever we want to the details and the view will just show it automatically. Pretty easy and generic. Later on thinking we could even add formatting info somehow.

The new service:

using TravSystem.Models;

namespace TravSystem.Services; public class PlanetDetailsService : IPlanetDetailsService { private readonly ITradeClassiificationService _tradeClassificationService; public PlanetDetailsService(ITradeClassiificationService tradeClassificationService) { _tradeClassificationService = tradeClassificationService; } public async Task<Dictionary<string, List<string>>> GetDetails(TPlanet planet) { Dictionary<string, List<string>> results = new Dictionary<string, List<string>>(); List<TradeClassification> trades = await loadTradeClassifications(planet); results.Add("Trade Classifications", trades.Select(x => x.Name).ToList()) ; return results; } private async Task<List<TradeClassification>> loadTradeClassifications(TPlanet planet) { List<TradeClassification> tradeClassifications = await _tradeClassificationService.FindTradeClassifications(planet.UWP); if (tradeClassifications.Count == 0) tradeClassifications = new List<TradeClassification>() { new TradeClassification() { Name = "none" } }; return tradeClassifications; } }
And then the controller just does:
// GET: TPlanets/Details/5 public async Task<IActionResult> Details(int? id) { if (id == null) { return NotFound(); } var tPlanet = await _repo.GetByID(id.Value); if (tPlanet == null) { return NotFound(); } ViewBag.Details = await _detailsService.GetDetails(tPlanet); return View(tPlanet); }
and then the view:
@{
    ViewData["Title"] = "Details";
    var details = ViewBag.Details as Dictionary<string, List<string>>;
}
....
@if (details != null)
{
    foreach (var kvp in details)
    {
        <div class="mb-3">
            <h5>@kvp.Key</h5>
            <div>@string.Join(" ", kvp.Value)</div>
        </div>
    }
}
and voila, details!

While working on this, somewhere along the line I wiped out my trade classifications data. I put it all back in using the T5 book. But I did not use commas, and that broke the service. I started putting in commas between each value, then the lightbulb went off - this is pseudohex code, so 1 character per value. I updated the service so that for each line if there are commas, it will split that way, else will split per character. I do need to verify it is working correctly but it does save on some data entry. But it is all or nothing.
ugly mix but allowed
The Wondrous Worlds is setting next to me at my desk. I'll probably do a overview/review of it in the next post or two. I'm also re-reading The Science of the Mind - I used it as a resource for my master's thesis way back and it has been sitting on my science shelf the last 30 years. So figured I should either re-read it or put it into the used bookstore pile to go. Not sure my brain is still up to that!
And yes, halfway through February already. Tempus fugit. And fugits faster as we get older.


And just in case anyone wants to look at the code: https://github.com/COliver988/TravSystem

Saturday, February 14, 2026

Traveller System Update 28 - World Data

I felt like getting back to this for a bit. Originally, I was going to start adding some stuff from the World Builder's Handbook but, after finally finding that (the Mongoose version, sadly I just have the PDF but the book is too $$ for me!), and looking at how it did something, I remembered that the Scuts book also had more details. Specifically, I was looking at calculating the gravity for the world. And there is a World Data table on page 48. 

It is now added to the software. I've not finished adding my data, nor added that to the planet details yet but probably will over the weekend later. Meaning I may add a new "planet data" service that this is just the start of. I want to add those quirks about society, the physical details like albedo maybe. And eventually create the animal encounter tables. With events. At least that is the current plan.


I also got the Wondrous Worlds book and will see about doing a preview. Yes, I do seem to do a bit of world building. And probably have far too many books for stuff like that. On the other hand...



Sunday, February 08, 2026

Corsairs Session 5: The Leiford Mines

Returning to the Dulcet Spire, Captain Penny gets 2nd mate Smitty to sell the sky whale meat they managed to harvest before the predators started in. Plans were being made: Smitty, John and Leslie, crew members, were to explore and check out the slave market on the Spire. During discussions, they did find that he Leifords did free some Batkin children, and that they found something strange deep in the mines. While discussing plans with the officers, a bosun alerted the captain that Mathew Roberts was requesting to come aboard. After brief greetings and an apology about not being able to get to the trade station at the appropriate time, Mr. Roberts said that the Navy seemed to be concerned about the Wind Razor. The crew did not all wear the appropriate uniforms, and apparently the Apderil Empire has a fairly strict uniform culture. He also had a map of the mines. Which apparently, we all forgot about. I had a couple mine maps ready to go and they never made it to the table. Not really necessary the way we played that scenario.

Deciding that perhaps their stay was over, they sent a runner to the slave market to retrieve their crew and took off post-haste. They did send Smitty to the Harbor Master's office to see if they could get a prorated amount of their docking fees back. Smitty is not a good bargainer: they almost had to pay early termination fees (snake eyes on the attempt. The players should not have let me roll!)

Leo, the pilot, despite several weeks of learning his craft, is still not particularly good with directions. They do manage to get to the mine, only 6 miles away. The fly closer and the officers debark behind the mountain where the guard tower cannot see them. Partway there, there are attacked by a carapaced creature of the Corsair world. Batrina was made aware and not wanting to alert the guard in the tower, drew steel. The battle was fairly swift with Tibbs, the dragonet, putting in the killing blow. And taking a bite to eat. 

Guard tower and mine entrance

Behind the tower, Tibbs provides a distraction from the guard as Batrina climbs up. A brief struggle and she knocks out Frank. The others climb into the crowded tower to decide on plans. There is a hatch in the middle of the floor that leads to the lower section. It is mostly a small storeroom: a barrel of water, some emergency food, and some swords, cross bows and bolts of arrows. 

Henry, the sneakiest of the, goes to the mine, and seeing no one there, sneaks into the passage. The player had a fantastic roll - all successes so he got as far as the barracks before hearing voices. Peaking around one door, he sees the kitchen with a couple guards and several slaves preparing a meal. Across from that is another door, leading to the slave barracks. Hearing that one of the guards, George, is about to head back with food for Frank, Henry darts back out of the mines and up to the tower to alert the others. And just barely in time: George yells from the storeroom that food is ready. Batrina opens the door and lands on top of him. Chili and crackers are everywhere.

A new plan is hatched, and Penny and Leo take the guards' coats, and they all head down the mine shaft. The other guard there, Hedley, looks up to see who is at first assumes it is George as Penny has a chili-stained rag up across his face. There is a quick scuffle, and the guards are trussed up. 

We went through this part pretty quickly: they promised to either take on the slaves as crew (and 5 accepted) or be taking out of the Alderil Empire (the remaining 3). Even though the Lieford slaves live a relatively decent life, it is still being a slave. They find that there were Batkin children in the mines about 6 months back from one of the laves who only had 7 more years (and I'll be frank: the older I get the fast the years go by! Well, actually, Frank is one of the guards and I am Craig <insert canned laughter>). 

They go to the office and find ledgers, including the one indicating:

2 Batkin children, ages appear to be early teens. Remanded to the Batkin Embassy 56 Day Year 1409

And this is where we left things off (with the slight update as above, so now we know that there is a Batkin Embassy somewhere). 

While I think I was a bit better organized this time around, I also feel that we're just sort of wandering in the desert with no real end game in sight. I think I need to give a bit more direction: the characters are privateers for the Repencarras Domain. While they have taken out on Alderial Empire ship in this game, it has been more personal as I am also trying to tie in the characters' background. We've rescued 1 father, that lead to clues to the 2 missing siblings, the Batkin above. So we *may* be able to see about rescueing them or finding out what happened to them. But I think I may have to slip them a note from the Repencarras Domain to remind them of their primary duties: harass the Alderil Empire. Which, now that I think of it, they are doing it if they are messing with mine operations. As those do get tithed to help pay for the government. So, yes, they are doing their jobs!

Tuesday, February 03, 2026

Matchstick bridge

When I work from home, I often have a scented candle - they do smell nice. Just have to make sure the cats don't get too nosy! I've been saving off the matches and made a bridge (or dock if I stick it over water). I may end up staining it. And it may get longer if I keep going through matches. But this is probably 6 months or more of lighting candles. And I actually do have craft sticks, but I liked the idea of repurposing something that most people would throw out.

why are the edges burned?!

The mug behind the bridge is a geometron mug is from Starshipwright Jeff Zugale's store. I backed his spaceship book from way back as we have many of the same SF art books. 


Sunday, February 01, 2026

Corsairs, some catchup and history

The world of Corsairs does exist in MTU, with the repellium being something that only works on this world due to the minerals, magnetic structure of the planet and stellar type (and add in any technobabble to fill in the holes). Of course, the mostly human population as no idea about the rest of the universe: the Builders created the Spires centuries ago. Early settlers that took advantage of the unique aspects of the world to create the floating cities. As with many science fiction stories, over the years they've forgotten their history, though there are history books and tapes buried in archives that have the details. Perhaps a few scholars may know the history. It was a one-way trip for the first settlers. Why? Something I'll have to play with later. Especially if I end up doing a Traveller game in MTU & the players visit Corsairs. That will be an interesting game!

Regardless, the world is now a TL 4 world, with sky pirates, floating islands, and in theory the danger of getting hit by falling sky whale poop. As they do poop for ballast reasons and it has to go somewhere. We've had some...interesting...discussions on some things. Our group, after some exploration, was heading back to the Dulcet Spire, not a whole lot better off than they were other than having a much better idea of where the mine is. 

My group won't read this blog until I point it out after next week's game 😸, and as I've been organizing a few things, I re-found that the mine is held by the Lieford Family. And yes, they also use slaves, including the Batfolk such as Batrina. However, I also want to put in a bit of grey into the black and white world. Slavery is bad. No getting around that. But it is legal in the Alderil Empire, even though a fair number of people do not agree. The Lieford Family takes slavery a bit differently than many that embrace it: they see it more as indentured service. If the group starts poking into the holdings, they'll see that the Liefords free the slaves after a decade, giving them starting money and essentially expunging their records.  Some have even returned to work for the family though that is rare. The mines on the surface are not as dangerous as other surface mines in that there are better protections against the rather violent fauna. The quarters for the slaves, while not lavish, are not just piles of hay and a bucket. The few guards that the mine employs are more to keep track of the surface creatures and protect the workers. While not by choice, the slave miners generally recognize that as abhorrent as slavery is, with the Liefords it is a temporary thing and they are not mistreated. 

Bringing this up now to let it also stew in my head a bit. Murder hobos are great for some games, but who knows if that goblin you just killed is just some parent trying to make a living. Which is the basis of this Kickstarter, and no, I not backing it even though I do like the Merry Mushmen. I can really run the same thing with pretty much any game system, and as I have way too many to even play the ones I have, I am trying to be responsible! But I want there to be some moral reckoning in case they go in, guns and cutlasses blazing. Well, I suppose a cutlass won't blaze. Unless it is a laser cutlass!

One of the things I am thinking about sticking into the mine is an ancient ship that crashed centuries before. It would not be operational, but may make the players think more about the world and the universe it is in. Plus, I could use one of my posters from 0-Hr. And, err, yes, I am backing the latest one for a large space station. So much for being responsible! But one of these days we WILL play Full Thrust and I'll need my little spaceships!

And there are some interesting discussions over on COTI. The "1G ships cannot leave a world of 1G or more" discussion is always interesting though some get very adamant about their positions. I try not to: it is a game we play for fun and as with all RPGs, we each make it our own. The discussion came up about using a launch loop and they shot it down as completely unrealistic and not practical. It is a science fiction game based on pulp SF - for me it does not need to be realistic or practical. It has to have some basis in reality, and yes, as soon as you have magic grav and fusion technology, you really no longer need a lot of these sorts of things. And yes, there is a reason I bring this up in this post: sticking repellium and the world of Corsairs in MTU would probably not go over well with some people as being "not based in fact and/or unrealistic". There is a reason it is MTU. And the way Traveller started out, you could have a steampunk world next to a high-tech nirvana. The Traveller universe honestly does not make a lot of sense outside of the earlier pulp science fiction on which it is based. The Imperium grew from "something way over there" to basically taking over the OTU.

But I digress. I have been painting some of the stuff from Archon. Still a WIP but the plastic pile of shame is, well, still the plastic pile of shame. Though part of my organizing also managed to get some of the minis in the last box into storage with others of their kind: my goblin and kobold tubs have a few more friends now.

And hopefully for those who got snow, everyone stayed safe and warm. We got about 6" of snow. 

we feed squirrels. I like squirrels

goblin hut. well, one wall for testing.

painting in progress. all 4 walls make the hut

and a cardinal. 

Happy February! Yep - time is flying faster and faster. Though I still do not have a flying car. 

Saturday, January 24, 2026

Organizing, Attempt 4,321

I've decided as mentioned to try a notebook approach to organizing. Which I've done a few times before, generally successfully. I had already bought holders for index cards to fit in a regular notebook. Then I dug back into my office supplies stuff as I was pretty sure that was where I put the paper protectors as well. Which is when I discovered I already had note card holders for those smaller notebooks! Yes, I do love office supplies for some reason. And I have a LOT of those baseball card protectors. Which, if you cut an index card in half, make convenient NPC character card holders as well.

options!
Going with the regular sized notebook as that is what I normally print things to, but now I can use that smaller notebook as well.

I went back and started writing down the NPCs but realized I've misplaced a few notes somewhere. But I started and will get more done this week. We are meeting this next Saturday at the moment, but between the storm barreling down on us, and my child (at 25 no longer a child but age does not change that) flies back home Saturday to Minneapolis. Thinking that the time to drop him off at the airport should allow me to get back in time as the game is at my house. And of course, my wife and the mother of said child may take him to the airport. Just not sure how things are going to go for a few reasons. Which is one of the things I won't go into here. 

Anyway, hoping to find the rest of the notes as I had a bunch of the ship crew names written down. I do need to perhaps use the full-size cards for more important NPCs, but this is, as always, a work in progress.

NPCs!
And about finished with Gervase the Ettin from the Caves Archon Kickstarter. It has been a fun paint, and now to put him someplace safe and someplace I can find him later!
close enough for done!




he does have two chickens hanging off his belt. 
I do have the Traveller project up and perhaps will do something more with it a bit later. Sadly, I feel I am losing interest in it again. That may be due to spending 8 hours a day writing the same sort of thing for work. Just did some major refactoring after a review from our consultant, though it was mostly an AI overview and suggestions. Most were valid, but some missed the larger context. Software is both simple and complex, and the applications does a few things in parallel which requires thread-safe operations. Which the AI complained about and suggested the "traditional" way. However - that way will break the application. I know - that was my original approach. But there was this import jo that was taking 2+ hours to read in an Excel file for a data import. I moved a lot of the DB actions to run in parallel with limits so I don't do a DOS attack on our own server (which, yes, I have done before. Lesson learned!) It now runs in less than 15 minutes. Part of that was running in parallel, another part I actually moved the process to run on the server in the background. Fun stuff, but the AI missed that larger context of how I am using those repositories that access the DB. In the end, I've been hearing for decades how "technology A" is going to replace developers. Like flying cars and fusion power plants, one of those things that is always 5 years in the future for a few decades. Then is suddenly here. Paradigm shifts happen when they happen. This is a good book that explains that: The Structure of Scientific Revolutions

Sunday, January 18, 2026

Player characters, NPCS and followers

I love creating characters but worry that, despite my intentions, I play them all pretty similarly. And this bleeds over to the NPCs and followers when I am running games. Pretty sure I've mentioned that I am not good at handling multiple NPCs. Even when playing, I have a hard time with followers and all that. Reading some of the rules in Dolmenwood it talks about towns people and adventurers and gives succinct rules for finding them (which is oddly reminiscent of searching for trade goods in Traveller as you can only check once per month per location). 

Every time I have more than 1 NPC with the players, I forget about them and do not use them as helpers to the group. I've forgotten NPCs that are there to help out the players. Not really sure how to deal with this, then realized I have far too many books on running games. So, I decided to see if there were any good ideas there. 

XDM defines NPCs as follows:

Where to begin? With this questionnaire!16 Rather than starting from the backstory biographical bits, we’re beginning with the NPC’s function in the story. Because form follows function. 

  • Which player character motivation, value, or mission does this NPC oppose? 
  • Why do they oppose it? 
  • How vigorously do they oppose it? 
  • Can they be persuaded to explain their position? 
  • Can they be persuaded to change their position?
  • How does this NPC’s backstory interlock with other elements of the story?

While it goes into motivations and backstories, it does seem to cover how to actually play the NPCs as far as I can tell. And to be honest, I did back the Kickstarter for this but in the end, was pretty underwhelmed with it for the most part. It had some really good theoretical and practical overviews of various theories of storytelling designs but seemed to miss the point in some ways. However - it has been a bit since I read it, so perhaps I should try & re-read it to see if I really missed the important bits. I have used some of it when designing an adventure, but between work, the gym and generally living, I don't seem to have the time really design some things to that level of detail. And honestly, some of my best games were ones where I had some real basic prep but not a lot of details and winged it. But perhaps if I re-read the chapter in running at the table it may help. 10 pages should include some good ideas. Though this stands out and I've tried it in the past but need to do this more often:

In Chapter 3, under “Go Modular for Maximum Flexibility,” we explained how the NPC we created to be a Miraldonian courier might also serve as a cudgel maiden on the City Watch. All the cells in your flowchart should be designed in this way so that you can move them around however you see fit. For these modular elements to be useful, they need to be sorted and perhaps categorized. It’s the difference between “which of my dozen NPCs will work best for this bit of dialog” and “I need a low-level townsperson, and hey, I have three to choose from.”

Hopefully somewhere it gives ideas on how you actually organize this.

Robin's Laws of Good Game Mastering has some good tips about running NPCs: keep conversations short and try to get to the point. If conversations start meandering, remember that the NPC probably has job they are doing and must be off. Avoid too much NPC-to-NPC conversation except as it moves the story forward, He has notes about having lists of names ready to go and how to come up with names. Which I've done - I actually have a sheet of names I printed and used in the Corsairs game (which I need to work in for the game in 2 weeks. After several weeks of not playing, we're trying to get back into regular bi-weekly games). One fun note is not using the same name: sadly, due to spur of the moment the Corsairs game has 3 Henrys. At least the various ship crews have distinct names as the doctor, 3rd mate and cook came from that sheet!

The Secret Art of Game Mastering has decent advice and stuff as GM we already know: NPCs are one way of allowing the GM to play in the game but also help keep things on track. But there seems to be a dearth of advice as to how to run and organize these NPCs. And of course, one of these days I also really need to re-read this book. I've skimmed it but after some point, and so many books, a lot of the advice is pretty much the same old stuff, and I may miss the unique take in a specific book. Not sure why I keep getting them to be honest!

So You Want To Be A Game Master has an appendix on the supporting cast, aka NPCs. And this one starts out saying that it is challenging enough to run a single character, let alone a legion of them. At least it starts off with my view of things! And also notes, as do all the other guides, that the more important an NPC is, the more you have on that character. And then finding what is really important in the game can get lost in the walls of text. There is an NPC template with several sections: name, appearance, role playing (quirks and stuff to make the character unique, 2-3 bullet points was suggested), background, key info which is where the stuff the NPC is really there for does not get lost. And only if really needed, the stat block.

And I've got the tools to do all this: even bought index card sheets to put into a notebook, and those page holders, and I even have a punch for anything I print to fit into a notebook. Even bought a set of colored pens so help with notes. The only thing stopping me is, well, me. I may spend some time next weekend getting the Corsairs stuff organized into a single notebook. The Corsairs notes are scattered in a notebook with a bunch of other things, a file folder and scattered index cards in various places. To do this right, each game in progress I think needs its own notebook. I actually ran the Big Wreck game that way - I have a notebook with everything in there. I have note cards from that box I bought for TFT cards (yes, it was for recipes but it is the perfect fit for all those cards. And came with 3 colors of index cards so in theory I can also organize cards by color). 

all the bestiary and solo game cards fit nicely
Okay - after re-reading a few things, I feel I have plan for organizing my next session:
  1. find an empty notebook
  2. get the game rules organized
  3. create NPC cards for each NPC and place into card holder pages in notebook
  4. move the scattered notes into the notebook
  5. ...
  6. profit!
Okay, profit in the sense that perhaps I won't have another 3 Henrys in the game!

I will note that the group I play with handle NPCs really well. One GM is really great at it, the other is also really good. Makes me jealous but gives me a goal!

And yes, I will get back to the Traveller software. My approach is a lot different than others I feel: I'm creating the software that lets the user set up all the tables. Most of the generation software for Traveller has the rules and all that hardcoded in there. Cepheus has changed a few things, Mongoose in its versions have changed a few things, and T5 has also changed a few things. Hoping that this will allow people to generate systems using whatever they want to use as the rules by giving full edit capabilities to all the tables. That does present a few issues I've sort of been mulling over: what if they want 3d6 table instead of a 1d6 or 2d6 table? Or a d15 table? And yes, I've thought of that, and one of the thoughts was we add a table of tables, so that for each table we can indicate the die rolls to use. Classic Traveller is all 1d6 or 2d6 tables, and currently the logic for rolling on those tables is hard-coded. I do take into account the lowest and highest results in the table (and now realize I need to re-roll in case there are missing slots). But perhaps we need to make it even more flexible: a user may want a larger table for empty orbits or something. And of course, I also take into account various modifiers so that we can roll more than 12, say, on the government table. But do we want to make those modifications also user-controlled? So many options! And that is why I get stuck: a gluttony of choices!