Monday, April 28, 2025

Traveller System Generator Part 6

And going in circles and I asked Copilot (Microsoft's AI now built into the IDE) what the problem could be. It actually did a nice overview of how things should be set up (and they were all set up correctly) and then in trouble-shooting side of things, mentioned to make sure that the related tables had records that were correct for the foreign key. And that was the entire problem: I had set some of the fields to 0 by default in the initial testing. When I added the law level connection (so that you can choose from a drop-down list) that record did not exist. So, I learned something new today. Normally this sort of thing is not an issue if you have proper safeguards in place and all that, but we're building from the ground up.

Anyway, most of the basic create/read/write/delete stuff is in place. There are a few things left to do to make it easier and cleaner, but I'll probably do those when I get stuck on other things.

This means I am now ready to tackle the "create a system from scratch". Going to go with the Classic Traveller Book 3 rules to begin with to get the basic stuff done. The idea is that when you go to the create a planet page, you can either enter everything manually or there will be a button to create the planet. This will create a planet from scratch but leave the sector alone (which I've not added that part of the UI). 

What that also means is that generating a planet will be a service that you call and it returns a planet model. The planet model is the main system as per the original book 3. To generate a system (all the planets, sun and all that) I'll need to dive into Book 6 again. But that, along with "generate an entire subsector" will come along later. One step at a time.



and really need to add a nice Traveller image or something here. but all the basic stuff is there

https://traveller-ct.blogspot.com/2025/04/traveller-system-generator-part-1-of.html

https://traveller-ct.blogspot.com/2025/04/traveller-system-generator-part-2-of.html

https://traveller-ct.blogspot.com/2025/04/traveller-system-generator-part-3-of.html

https://traveller-ct.blogspot.com/2025/04/traveller-system-generator-part-4-of.html

https://traveller-ct.blogspot.com/2025/04/traveller-system-generator-part-5-and.html


And I was in Minneapolis this las weekend visiting my child. It was a good trip (and yeah, they are 24 but still my child). Two of my sisters also came along and we had a pretty good time. We did visit the state's largest candy store and it has an interesting collection of movie things.




this was like 8 feet tall. so life size. and really huge when you stand next to it!



Wednesday, April 23, 2025

Traveller System Generator Part 5, and odd frustrations

I now have most of the basic editing stuff in place, though still need to prettify a few things. However - adding the law level to the repository to be included seems to be causing an issue. No idea what it is as everything else looks configured correctly. 


But one thing I've learned is that the more complex the system is, the harder it is to find the actual issue. Last time this happened I had an error in the repository that broke routing for some reason. I think it is something similar. And while my side of the code is pretty simple and straightforward, the framework and language are doing some pretty complex things! And as noted in the last blog, the repo was not public - GitHub changed some time ago to default to private repos and I forgot to update it. It is now public so available for people to look at.

Which brings me to a related thought: in our games, often the answer lies not in the initial approach but in thinking about things. While I am not too much of a fan of puzzles in games as my mind just does not work fast (I am stubborn and will get there eventually, but it is that eventual part that slows things down!). A fresh pair of eyes can see things that we may be blind to. Which is why having other players really helps: we all have our strengths.

Anyway, a short post as I wanted to get one out before going on a short vacation. And to note that when I finished my Gatorade, I realized that the bottom of the bottle was an interesting shape. A base coat later, and I have the start of a silo or something interesting.



Baby Bear
And of course, another of my cats. They seem to take shifts when I work from home. I usually get all three of them sitting on me at one point in the day. One of the better parts of working from home!


Sunday, April 20, 2025

Traveller System Generator Part 4 of many, long intervals between games

We alternate every other weekend to play games at each other's house as I've mentioned before. Which means we get to play once a month when all the stars align for each other's game. So, it is hard to remember what happened. I am fortunate that one of the player's actually brings along his laptop and takes really good notes. And the GM has a pretty rich lore which is run. I try to recap the games at my house in this blog, so that they are also available. Especially as we may eventually bring in other players and in theory, they can get up to speed if I can link all the relevant posts for them. Which really says I need to get better at tagging posts with game recaps. But regardless: I know I am lucky to have such a good group to play in! And there is a lot of overlap in this group and my weekly Monday gaming over Discord. 3 of us are in each of those groups. Anyway - we got to play yesterday, and my brain is like a steel sieve. But I was brought back up to speed thanks to excellent note taking from someone else. 

And only got a little bit more painted. While in theory I have 2 weeks, I am also visiting my child (who is 24 but my child nonetheless!) next weekend so will have no time for game stuff. Need to enjoy family when I can - that is the most important thing in life. Well, maybe cats too.


June Bug

Part of that is that my brain works oddly: I was reading when I realized what I was not doing right in the Traveller system generator. So of course, I immediately go to the computer, and yes, what I thought was the issue was indeed the problem. While I should be reading my book, but I tend to really enjoy coding the fun stuff. And I do think that this will eventually be useful to the few people who do want a system generator. And this one should give them a bit of control over a few things. 

At this point there is still a bunch of basic CRUD (Create. Read, Update, Delete) to finish up which is maybe a few hours tops. Then the meat of what I want to do: add a button on the create planet page to actually generate the planet for you. Step one of creating an entire system, then an entire subsector. And incorporate the World Builders book and a few other things. But: I know exactly what needs to happen at least this time around. And making good progress. In theory anyone can go to the GitHub repo and download the code, look at if they want, and run it locally. The port is actually different than what I gave originally as I was running it in Docker as a test. But now I am running it locally. Http://localhost:7141.

I've also added a bit of a menu which will need work later but good enough for now. And cleaning up the planet list - better column headers, added the UWP, and now linking supporting tables to get teh values rather than the foreign key to those supporting tables (atmosphere and starports so far are in place)




Edit: Had not realized the repo was private. It is now public and on GitHub here.

https://traveller-ct.blogspot.com/2025/04/traveller-system-generator-part-1-of.html

https://traveller-ct.blogspot.com/2025/04/traveller-system-generator-part-2-of.html

https://traveller-ct.blogspot.com/2025/04/traveller-system-generator-part-3-of.html

Friday, April 18, 2025

Traveller System Generator, Part 3 of many. And some game prep

Spent way too much time trying to figure out a routing issue. Routing in web applications basically tells the application what to do based on the URL. .NET Core (what this latest attempt is written in) does this by convention to make it easy if you follow the conventions. Which I did. But it broke with something I did. So I put back in the working state, then started doing 1 update at a time. 

It turns out that (a) where in the startup process you put services and stuff matters, which I knew already, and (b) something entirely unrelated can break things. I actually had a problem in my repository, the service that acts as an interface to the database. In this case, SQLite (which by the way has a real interesting history). Once I fixed that stupid issue, it all worked! Made a few more changes, such as adding the Traveller hex code to make the records independent of the actual record ID, and some UI improvements. But got stuck again trying to get the view to show the related records, in this case, to show the actual atmosphere description rather than the ID to the record. But progress!


I may try again tomorrow - in theory it should be simple. But hindsight is always simple. 

I also need to think about the next Fantasy Trip session. We left right before the big fight, so I need to set that up, work on the demon's stats and her potential attacks. After all, she *should* have some magic, not just impervious to non-magical weapons. I plan on getting more details about that worked out. 

After that we need a bit of an interlude, and while I was digging through my minis, found these. And think I want to do a bit of Sorcerer's Apprentice vibe if I can. And rather than stick behind the computer screen all day, I will get at least these 2 figures painted.

Before any paint sitting on more stuff I found


WIP. More stuff I found. And a gate to where?
I also backed Archon's latest Dungeons and Lasers project. They did an overtime process: for every updated pledge or new backer it reset the timer to 10 minutes. It lasted a long time, and they were very generous with some amazing stretch goals. The caves I backed last year should show up in a month or two, so we'll see how those work (and add to the infamous pile of shame, though I also added two of their "prisma-cast" pre-painted stuff to see how that looks. A bit more expensive, but if you factor in my time and paints (well, I have a lot of those so need to use them before they go bad!) it may be worth it.

On an entirely separate path, my boss got laid off last week. Which struck me particularly hard: he was the one that hired me two years ago and had just saved the company at least $100K in license fees. But sadly, no job in IT is safe (or any career, really). I've been let go 3 times, each time with zero warning. Each time shocked and diving into a weird depression. I just need to get 4 more years in (yay, I hit 61 this month!), assuming that Medicare is still around then, as well as social security. Insurance is the big worry for me - it is so crazy how much it costs and how little you get for it. But that is starting to veer into the political realm, so I'll just try & keep happy thoughts, stay employed and save up as much as I can. 

And play with my toys.

Tuesday, April 15, 2025

Traveller System Generator Part 2 (of hopefully many more again)

Added the atmosphere stuff (editors and all that) and realize I have an issue with my schema already: I was using the primary key to ID to data, but a lot of DBs do not like 0 as the primary key, plus you may not always enter things in the proper order. 

I'll have to add a Traveller Code to the tables. That also may take care of the hex coding, but then we really need to get the order correct for the dropdowns.

But: we can do dropdowns now, and validation is in place. What should have taken me just a few minutes too more than an hour as I was fighting Docker. Decided I did not need to really use Docker so switched to the local Kestral web server. Then found the real issue was I really needed to clean the project. But lessons learned!



My next step will be to update the tables (and verify the migrations work). I also use another tool to look at the SQLite DB and that is useful to look at the actual data. Which is always an option for anyone who actually uses this. If anyone other than myself :)

As a 3-day weekend is coming up, I am hoping to get the rest of the basic CRUD (Create, Read, Update, Delete) stuff sone as that is mostly letting the scaffolding tool do its thing, then start in the actual service to create a planet from scratch. And a menu as right now I have to manually type the controller in. 

But this should come together pretty quickly to be honest. I know I've tried this earlier but as I now do it for work, and got paid to figure it out and had a consultant help with some, and all the useful knowledge people are willing to share, and the advances in tooling and AI, well, it is just a lot faster!


Sunday, April 13, 2025

Traveller System Generator Part 1 (of many, many parts hopefully)

Yeah, went ahead and started a new repo & project using stuff I've actually learned at work. Yeah - even after writing code all this time you still need to keep learning new things. I have the basic schema so that we can create subsectors, systems in the subsector, and planets within the system. You may note that planets can point to other planets: this is how moons work as they are just planets. Or the case of Regina being in orbit around its gas giant (and I am too lazy to even go to the wiki to see what that name is!)


And I've created those tables as models with repositories and all that, as I am using dependency injection for this project (which means for some things it will be a lot simpler to maintain and update, but that is neither here nor there for you).

It uses a SQLite DB, and will create it on start up. I've added the automatic migrations, so that updates will automatically update your DB as I know I've left a few things out. What this really means is that when you run it, it will keep the database up to date automatically. 

And then, of course, the question is how to run it. This is a website but not published anywhere. You can go to the repo here (MIT license which I think is the most open, but I've not checked recently), you can download the source code as a zip file:

Unzip and go to the project level in a terminal (Windows you can use terminal or powershell, Mac bash or whatever APple has "updated" its shell to: I stick with the classic bash as it works the same on other platforms I deal with. And I am stubborn!) Then you can just do "dotnet run" and it will start up. You then need to open a browser to that local host and *poof* there it is. Localhost is just your local machine. Unlike older MS web software, this does not require their IIS server and can run on a Mac, Windows or Linux box. You may have to install the .NET stuff but it *may* do that for you. If on a Windows machine it is already there most likely, and quite possibly already on a Mac as well. 

Right now, it is all the default stuff, but I did test scaffolding out the planet editor. It needs works as those IDs are actually foreign keys to other tables: for example, the atmosphereID will point to an atmosphere table that has the classic (or whatever!) atmospheres you want. I figure it should not be any issue if I do not supply any of the data but the user puts it in :) This way you can make your own descriptions. 

And yeah, TPlanet as I decided to prefix all the Traveller specific tables with a T. Part of that is "System" may be a reserved key word and could cause issues with some things.

Anyway, a fun project that in theory anyone can run locally, and view the code.

Next steps are to get that planet view working the way I want, but then the longer-term objective is to generate a planet, then a system, then a subsector. Will anyone use it - probably not as there are a few already out there that do this. But it is fun and this tech stack I am pretty fast with and now that I understand more of it, I can make this work the way I think it should.

Friday, April 11, 2025

Traveller Pirates - Hard Copy

The hard copy showed up earlier than expected. It is nice, but a little larger than the original LBBs by maybe 1/8 to 1/4". I've not measured it.

I can't say if the black is off - my copies are a few decades old. The font is close, but still there is enough of a difference that I can tell. It seems more italicized than the originals. The cover feels about the same thickness though and does have a nice feel. 

Inside, the pages are brighter of course. The pages are slicker, and the paper of course is different. The font seems a bit smaller to me compared side by side, and again, it not quite the same font. And the tables still have that not-quite-right feel to them. I feel the typesetting was more meticulous in the classic books, and people just use the electronic tools without giving them a lot of thought as it is so simple to make changes. 

Overall, though, it is a good effort at recreating the original style of the LBBs. I am saddened that it is a bit taller than the original books by a bit, but happy that there is a new classic book out there!

Is it worth it? If you love Traveller, and want the extended Pirates career, then yes. Though I think there are close variations in a Cepheus book or two (and one I've seemed to have misplaced, as well as the T5 ship deck plans. They are somewhere in here!) I'm even hoping to get my group to play Traveller gain, this time maybe as pirates. Last time they seemed too constrained and were so very leery of breaking any rules. Even though each planet has its own laws, and there are few Imperial-wide laws out there. Just no nukes is the main one I can recall. That and do not mess with trade, though that may be more a product of countless discussions I've read through and not actual Imperial edicts. 

And again thinking about Traveller software. I got what I wanted done in the Traveller world explainer, and of course, not being able to distribute it, and people naturally hesitant about downloading an installer from an unknown source, kinda put an end to that process. But I did get the World Builders book from Mongoose in PDF, and oddly the Perilous Void book as well. And I could make a web site but again, I've no idea about how to host such a thing. What I can do though is make the source code open source and people could run it locally. It would work on a Mac, Windows or Linux machine. That way they could see the source code as that is what they would be using.

The idea is to use SQLite as a backend to keep track of data, and I'd go way overboard with a similar architecture as I use at work, with repositories and all that. Anyway, thinking about it at any rate as I really like writing code, I really like Traveller, and they go hand in hand. But I'd start small: start with a system generator. You could create or open a system. It would be API-oriented, and at the moment no graphics. But in theory (!) I could also start using the TravellerMap API again and you could actually generate a subsector and plop that into the API and get that map. I know how to do that, though the details in generating the correct files would be a little tricky in some ways as it is a fixed-width file vs a nice JSON or XML file which are simple to do. But I've got that hankering again. Which would make this probably the 20th or so project that I get started on and never complete. But I am thinking about it.

For those who want to see all the incomplete projects, my GitHub repo is here. The Traveller one has several under it. Most are Windows-based but a few I started messing with web applications, and those, if written in .NET core, will run on Macs as well as PCs. Which is what I am doing for work as it will actually get deployed on a Linux box. Microsoft has changed a lot over the years....

If there is interest, let me know! I may even start this weekend as I have time for some reason - no gaming Saturday, my wife is out of town, so I may get a prototype of something. Between scaffolding and AI assistance, I am getting faster at web development finally.

Thursday, April 10, 2025

Traveller Pirate Character Generation

I've got the notice that the physical book has shipped, but it won't show up until next week. I'll do a review of the physical product then. But for now, let me see about rolling up a pirate character!

Constance "Nightmare" Astley. RIP, died age 19

Initial stats: 958677. A fairly average person, a bit stronger, a bit clumsy, not too smart but no dummy either. And an even die roll and we have a lady pirate, Constance 'Nightmare' Astley (thank you, random name generators!) Rolling for a branch and Constance is a Crew member. 

Term 1

Year 1: Basic and advanced training. Constance gains the Vacc-Suit skill and Zero-G Combat. She will be able to jump from the pirate ship to the ship they are attacking! She also picks up the Brawling skill based on her crew position - apparently Apprentice Henchmen can fight. While it does say you can roll for promotion, there is no training column, so we'll go with the Grounded column, requiring a 10+. Which she does not make. and update: re-read the rules and no promotions in training. Not sure where I saw, or thought I saw, that!

Year 2: Raid! And she dies an ignoble death with snake eyes.

We'll have to try again!

Maria 'Immortal' Lynx

AB6748 Pirate Corporal, age 26

Brawling-2, Communications-1, Gunnery-1, Recruiting-1, Carbine-1, Carousing-1, Zero-G Combat-1, Survival-1. 
Low Passage
New stats: AA6748. Stronger and more dexterous than average, not particularly well educated. And another even die roll so now we have Maria 'Immortal' Lynx. Here's hoping the immortal part works. 

Term 1

Year 1: basic training for our new crew member. Brawling-2 (got it twice), Communications. 

Year 2: Raid! She survives! But is not promoted but does gain Gunnery-1. 

Year 3: Special Duty - Loot! That must have been some raid! She gets Cr4,000 and gains the Recruiting skill. The good life helps in showing how well pirates can do.

Year 4: Raid! She survives her 2nd raid, gets promoted to Henchman, and gains Gun Combat - Carbine-1 (had to look back at book 1 gun skills, and the carbine seems a likely pirate choice. At least to me, a guy who knows nothing about guns). 

Re-enlistment takes 7+, and she does make it. So off to term 2!

Term 2

Year 1:  Smuggling. Easier to survive, and she is promoted to E3 Corporal. And gains the Carousing skill

Year 2: Piracy. Barely survives and does not get promoted. But she does gain Zero-G Combat.

Year 3: Smuggling. Surviving another year and no promotion. She does gain +1 Dex giving her AB6748.

Year 4: Grounded! She lives to tell another tale, and again is not promoted. But gains the Survival skill. 

She does NOT make her re-enlistment roll, so Maria 'Immortal' Lynx is tossed out of the pirate crew. Apparently, years of not getting promoted did not look good on her resume!

Mustering out, she gains Cr0 on the cash table, and a low passage. The pirate life is not one for retiring well.

And Pinterest is getting way too many AI art images...hate that.
from Artstation

And as we've been expanding the Space Gits game (one of the other players is quite the writer!) I'm going to drop her into his expanded world. For Space Gits, her skills would be mapped as:

  • Brawling 2 => Brawl+2
  • Communications 1 => Comms+1
  • Gunnery 1 => Big Guns+1
  • Recruiting and Carousing => Negotiations+2
  • Zero G Combat 1 => Zero G+1
  • Survival 1 => Survival+1
Space Gits is heavily influenced by Traveller! Not sure there is a 1:1 relationship but close enough for me.

Once running with the Red Reaver pirates. after 8 years of raids, piracy and smuggling taught Maria one thing: get out while the getting is good. Quiet and deadly, Maria seems to only have dark-colored and tight-fitting clothes. She has a flair for the theatrical, wearing a Kevlar cloak that seems to flow more like heavy silk yet provides some additional armor, especially from the rear. A decent shot, her almost preternatural dexterity helps her aim significantly. Her slender frame belies her strength, though at almost 6' tall she does stand taller than most people around her. She has since settled down on Kagen's Moon. She sometimes works for Archangel Securities as hired muscle when needed, but they do not trust her as they are somewhat aware of her background. The twins, Egrest and Trome, think she may still be working for the Red Reavers. Only Maria knows the truth. She has a small apartment near the port, across the street from Mama Luigi's, a brothel run by Luigi Demoncica, who is no one's mama. Maria has sometimes been a bouncer there when the more riotous ships dock at the port and shore leave becomes more rambunctious than normal.

Wednesday, April 02, 2025

Fantasy Trip Game Recap: Session 9

I've sort of lost track of which recap this is but based on the previous titles, this is the 9th session.

We last left our adventurers below the tower, the gelatinous cube blown up by the remainder of the blunderbuss' charges. One of the players was missing, and so his character went back to keep track of the tower in case anything decided to follow the now rather large group.

Deimos' light is still shining, and Hexis leads the group. To find the ghostly remains of Stubboon himself. I should have had Aigulf more excited as he was tracking down Stubbon's journey, but I am easily overwhelmed by too many NPCs. And this group currently has the 2 new halfings, Marianne the Lapinfolk, Dovak the druid and Sister Ishbarra. 

I had written down what I wanted to do with this encounter:

End of 3 rooms below the tower:

A ghostly figure appears before the adventurers. Behind him are small, rotting chests, bags and the remains of some camping gear. There are some bones from humans, goblins and what may be orcs scattered about.

"Who comes down to my last standing, my final presence in this world? Can it be someone who can free me of these lasting chains that bound me?"

If a cleric type of person says some prayers, maybe? Or in the book Deimos has?

Sister Ishbarra may make prayers and Logton's avatar may show up, heal everyone including Stubboon and help ease some of the corruption

Sadly, her roll was not that good, so the remaining 3 paragraphs I had written never happened. But he kept claiming about being chained by the demon, and only a magical sword could free him of his eternal haunting of this small room below the tower of his last stand. 

Hexis cuts the chains, and he dissipates into wherever ghosts dissapate to. He was standing guard over a chest, piled around with the bones of his few remaining followers. Dovak, Dawn and Sister Ishbarra did what they could to organize them for a more proper burial process. In the chest were the Orc Fist gloves, which effectively give the wearer +2 STR for the purpose of weapon handling (and breaking down doors and all that, but no effect on actual STR and hit points) as well as stone skin. We also randomly rolled up additional armor and weapons from the OSR Booster book I had just picked up. I am putting the details here for the players:






At this point, Axz comes running back: there are gnolls heading to the group! Violet had noticed there was a door, though no one heard her the 1st time. She manages to pick the lock, and they all troop into the corridor, then lock the door behind them. Of course, with this size of a group, the 1st trap got triggered right away, but both Violet and Hexis managed to leap to the other side of the 10' pit that opened up under them. 

Getting the rest of the group across was a little challenging, and somehow, Marriane fumbler her roll and slammed into the wall - they were holding a rope so Hexis could help people jump. To jump a 10' section in TFT you add your DX & ST and roll 5 dice if I recall. 

And the map I had made had a bunch more hand-written notes on it.

They manage to not look down the grates, did not reset the pit trap via the mushroom switch on the wall (there was scraped mushroom on the wall on either side of the eldritch purple mushroom), and did manage to kill an odd, oozing creature (the booger monster) and get a bit more treasure behind that creature.

They also noticed the table had a spiderweb doily under the candle, and the candle itself was trimmed with no melted wax. This was a very clean dungeon! Then they find Arachne, the spider-person who cleans the dungeon. I never could figure out how to do her voice, or even what she sounded like. But, like stubboon, she was trapped here by the demon and would be grateful if they could kill that demon. Which they have fought before. But now they have magical weapons and armor that can help defeat her!

Arachne also noted that some of the corruption seemed to be gone: freeing Stubboon is helping things a long a bit. I do need to re-read the book this corruption is based on, as there are some ideas as to what happens as the corruption gets lifted.

Next session will be the boss battle there, and I've a few ideas for what happens next based on some minis I found. That I need to paint before then, but it can make for a nice interlude and depending on how long they stay, maybe level up things as TFT does.

And for Deimos: yes - you can learn the spell from Dovak as you have the XP you need I think, and as you said you were talking and learning, that works for me.