Showing posts with label Traveller. Show all posts
Showing posts with label Traveller. Show all posts

Sunday, April 26, 2026

Traveller System Update 35 - World Maps

Was lying in bed and realized I could probably get AI to generate a world map for me, as I am not great at the UX side of things. The first draft actually mostly worked: I had it create the service, show me the updates to a few of the associated things, and it does generate a graphic thing. That is sort of close if you squint sideways and have a few drinks.

But - it is a start. I'll have to look over the actual code to see what is actually happening. I think the math side of things is correct, but it did not generate the world map based on the Form 8 I dropped into the chat. However - it was also about an hour or two of work, versus a few days had I been trying to do this by myself. 

Which sort of brings to mind the whole set of changes that software has been through. I've actually worked with punch cards (24 rows of 80 columns), teletype machines on greenbar, vim editors, plain text editors, early GUI editors and IDEs that started with auto-completion for lines and now the AI (technically large language models) that can write most of the code for you. Production-ready or not is an entirely different discussion, and a matter of opinions (mostly based on if they are trying to sell you an AI system or "reduce headcount"). Of course, Claude, the most popular code generator, just jumped up significantly in cost. Remember kids - the 1st hit is free!

What I was aiming for


What I got
I will get back to the orbital stuff, but I wanted to get something a bit splashy out there. I see what others are doing and honestly get a bit depressed: they are writing consumer-facing software, and I am sort of stuck in enterprise backend ideas. Of course, that is what I've done for years so it is a natural fit for me. 

Edit: a bit closer!


Thursday, April 16, 2026

The Kinunir Game - Session 0

Color me surprised but I am going to run a Traveller game! Using the Kinunir since it was the 1st published adventure, I have the original version as well as the PDF, and there is some discussion over on COTI about the ship. I took that as a sign.

We had a session 0 and I had them roll up characters. Oddly, we have characters from Classic Book 6 Scouts, Mongoose 1st edition and Cepheus Diverse Roles. And even more interesting, to me at least, is that they only stayed for 2-3 terms. 

The Scout player wanted to be an engineer, and tried to get into college and failed, then tried to get into the Navy and failed, and the draft ended up Scouts. Which can give the engineering skills. I doubt he wrote down each year and what he did. Oddly none of the duty assignments had a chance of promotion. Nor did he end up with a Scout ship.

The Law Enforcement player, using Mongoose 1e, had an interesting career with some interesting events and picked up a smattering of skills. It has been a while since I rotated through that character generation process so had to backtrack a couple of time. He ended up a lieutenant, I think. 

The final player, who has joked for years about playing a juggling whore, ended up going through the Prostitute career. He picked up a few interesting skills, including advocacy (lawyer), got beat up by some of his clients. The mustering out benefits are not great for that career, but apparently the player has a plan for what he wants to do.

While I do like Traveller character generation, and I do house-rule that they roll then can pick the skill, the players I think wanted more control over things. And it kept coming up about the adventure: what sort of characters did they need for the planned game? And to me, that is where Traveller really differentiates itself from most RPGs: it really does not matter too much what your background was, what matters is what you do. All 3 characters will have something that can help with the game. Years ago, I ran a game and 1 player chose barbarian and had all of 1 term. He had 2 skills I think, and none of that mattered in running the game honestly. I'll probably recheck the Mongoose skill package and may do that as well. We have 1 more player that will need to generate a character as well. 

The other question is - OTU or MTU? I was going to go MTU but looking at the adventure, I'd have to translate a fair amount to map it well enough. I decided to stick with the OTU, and they are all from Regina by their choice. Being a long-time Traveller player I would have gone a different direction, but they all wanted it to be simple and that does simplify a few things.

The prostitute, a hetaerae actually (Hetaerae – You are a member of a trained and educated group whose job is to provide long term companionship) may have had some interaction with the police officer. They did end up with 2 contacts during character generation, though the player decided on his own who they were. I'll have to get that info so that I can link that into the rumors and patrons of the adventure somehow. The Scut has mustered out on Regina as there is a Scout & Naval base there.

I never did a world write up on Regina, so I suppose I'll see about generating some maps. There is a LOT of info on this subsector capitol, so I'll have to read a bit on that to not break canon too much. Not that we will really need maps, but I like them. Plus need to figure where to place the Scout and Navy bases beyond the starport, as well as the miscellaneous shipyards, one of which has the Kinunir in it. Maybe map the shipyards, though that would be an interesting challenge as space is a fully 3D environment. 



Friday, April 10, 2026

Traveller System Update 34 - Orbital info part 5

Orbital dynamics are hard! Maybe it is rocket science. Anyway, finished with at least the display for the edit. Just need to repeat for the create view, and then actually save off the data. Then add at least the primary to the index view.

In theory I enabled the multi-select, but now realize how would you tell which star type goes with which size? So - I need to make it single select, and possibly duplicate for multiple stars? Actually, I need to pull the star type stuff into a partial view and have a view per star. The create will need to have a "add new star" option as well. And this is one of the reasons you want to think things through before starting. As Abe Lincoln said, "If I have six hours to cut down a tree, I spend the first four sharpening the blade." And as more than one of my bosses has told me over the years, "Slow is fast."

Anyway, as this is a personal and honestly slightly meandering project, that's okay. But I'll have to add the partials to allow for multiple stars in the system. As well as making that work in the details view. And I do plan on cleaning up the landing page with drop-down menus versus the single line across the top. Just need to figure out what goes where. Which is one of the harder issues in software honestly: just where do you put stuff? I could bore you to death talking about repositories vs ORMs and various service layers. Though I will note that this application follows the basic standards so that other developers could easily find things for the most part. 

The job search is honestly depressing. 52 applications so far, 4 rejections. Main issue is I am an older software developer, and most companies do not want to hire older people. Which is silly - they are just about guaranteed that I'll stick out for a few years vs younger devs, who often have more options, will jump ship as soon as possible. And I do have a lot of experience. I figure I'll keep looking another couple of months then perhaps look at Lowes around the corner. Sadly, if not for insurance, I'd consider an early retirement. I have been working a long time. At least I've met a lot of really nice and interesting people along the way. Along with some not-so-nice people, but that is life.

Friday, April 03, 2026

Traveller System Update 33 - Orbits Part 4

Progress is being made, though there are a lot of moving pieces. Turns out I never got around to adding the stars to the system model! Part of that is also due to the fact I was confused over the nomenclature: what I am calling stellar types is actually the sizes: Ia, Ib, and so on. And the star type is the traditional B0, G0 and all that. Which I *finally* figured out when I created the stellar data table to get all the other info.

So, adding those to the system pages as well as updating the repository so stuff is eager loaded. Meaning we collect all the related data when we do the initial request for the data. As this DB is so very small, as well as local, that sort of thing works well. For larger, more complex databases, this is not always a good idea. Like a lot of software - it is usage dependent. Sadly, I live in a world with few hard and fast rules as so much is contextual!

Regardless, got the star list to at least show up, though I am not saving off the data just yet. But once I get all that done, as well as the same for the stellar size, then I can get to the actual orbital period! 

work in progress. And yes, really need to make that a prettier list. I'll probably fancy it up via some AI prompting.

Job hunting is going apace. I fear that job scrolling has become the new doom scrolling! I've applied to 26 jobs so far, and of course, heard nothing back. Several I think I hit all the marks they want but this is a crowded field. And honestly, in the software world, not all those jobs posted are actually real jobs. Shocker, I know.

And finally - I watched the Artemis launch. So glad we are going back to the moon. I remember the Apollo flights and thinking we'd have a moon base not too long after that. I suppose too much UFO and Space:1999 spoiled me.

Space:1999

UFO


Saturday, March 28, 2026

Traveller System Update 32 - Orbital Distances Part 3

And then I had to add the orbital distances table and UX as we need that to calculate the orbital period. Though to be "more" correct, the mass of the planet would also impact the orbit as heavier or larger planets will have to go faster in the same orbit. But not going to worry about that overly much: this is a game, not a reality simulation. Which often comes up in arguments over on COTI. Or at least very active discussions.

I did add the paging functions to the stellar data and still have a few of those rows to add in but getting closer to adding the orbital period to the planet information. Then we can also add in albedo, world average temperatures, and stuff like that. However, albedo will be interesting:

The albedo for a world can be computed by what portion of the world is covered by various terrain types, and noting the average cloudiness of the atmosphere. Combining these values provides an overall albedo for the world.
That is two more tables we'd have to add - albedo by terrain type, and cloudiness based on hydrographics. Which then means we'd have to figure out land masses, determine what is covering them and fun things like that. Do-able, but diving deeper than I thought this little project would go.

Regardless, I should have the orbital distance calculations done in the next update, probably another day or so as sadly, I still spend a lot of time behind the keyboard. But it is fun for me. Which is great as I've been doing this for a long time, and if it is still fun, then I've picked the right career. 

Anyway - more progress as I have a bit more time now obviously! But now off the start prepping for next week's game: I need to see if I have the terrain and minis and get all that ready to go as it is a face to face game. 

I'm going to have to rethink the menu as the horizontal is running out of space, and just because I have a wide screen monitor does not mean every else does!



Thursday, March 26, 2026

Traveller System Update 31.5 - Notes on data entry

Well, putting in the data is certainly a longer process than I would like. If this sort of thing happened a lot, I'd create an import function as those are pretty simple to implement. Working my way through entering the stellar data, just so I can calculate the orbits! Yeah, I could take the easy way out but oddly I like math and figuring out how to do this sort of thing (not saying I am good at math, but like physics and a few other things, I like it without necessarily being good at it. See any earlier posts on game organization!)

Anyway, got through adding a few more and realize I'll have to add paging functions to this page. I had a few choices when I started this project, which was first, yet another version of some form of Traveller software, but also a way for me to play with the latest version of .NET. Way back when I started and .NET came out, the boss would never let me use the latest and greatest. "Never use a .0 release" was the common refrain. And from a business viewpoint, pretty standard honestly and safer. I went to a local .NET user group for years and they got to play and show of the latest stuff, things I could not use. Anyway - now I can at least for personal projects like this one. And actually I was at my former job as it was not yet in production, as well as that entire software ecosystem is pretty mature and thoroughly tested even for .0 releases.

Anyway, back to paging: the repositories in this application are mostly pretty standard, and now I am wishing I used a generic repository as that would have covered probably 95% of the usage. What that means is: instead of having a repository class (where we can load and update data for a specific table), we create a generic repository where we pass in something like <StellarData> to indicate the stellar data type. It would have simplified things so that I would not have to write a service class per model. However - the downside of that is things that are unique to a class, or if you want to include related records, I think makes that approach a lot more complicated. Like a lot of things even outside the world of software, one solution rarely solves all the problems. And as an aside, don't get me started with Entity Framework being a repository pattern already! I go back and forth on that a lot as well. And yes, unless you are a developer or in the IT world, probably a WTF am I talking about?!

Regardless, I'll have to add a paging function as the list, even when half completed, is already quite long! Maybe a search function as well so we can find all the G0 class info, or all the subgiant type info. Not sure what would even be needed since I am the only one using this. You can see why a product owner can be important - let the developer know what is really needed versus what we think is important!

But why this is only half an update: it was mostly data entry and some musings. Though I may go ahead & add the paging functions as that is not complicated. For good or bad, I just get the AI to do most of it. Or I can copy/paste from other code where I did this before. But AI is a great tool if still overhyped in so many ways.

that is a lot of data!

I really need to also start looking at the next game. Getting laid off really throws me off a good bit. Still taking some time off though I did attempt to sharpen up my resume and randomly apply to some interesting places where it looks my skills could work. But as I told my group - the good news about this is that I have more time for game prep and reading! There is always a bright side to everything. Sometimes you really have to look hard though!

But I think the players are excited - they have some character ideas, and I've started going through the Backstory Generator and two of the characters are in the employ of Zoemina Ladle and sometimes take the crab apples to the castle, a journey of less than a day. They usually meet at the Roost (an inn built into the trees of the forest) but also have a secret location as sometimes she may have them do more clandestine operations and need to meet a bit more in secret. The two players are the wife & child of one of the players, so not sure how to get the location of the secret place to them. Though my group is pretty good about metagaming so if the players know that and the characters do not, they will stick in character. I'll have to check.

not sure who did this but found on Pinterest


Saturday, March 14, 2026

Traveller System Update 31 - Orbits Part 2

Got to adding the UX (User Experience) for entering the data from the various charts in Book 6, pages 44-45. I've essentially combined all those charts to single chart. 

Edit and creates have nice drop-downs and the index seems decent enough.

Dropdowns!

Charts!
I do realize when reading what other people do when creating Traveller software that I am doing this in an entirely different direction. I'm coming from the viewpoint that the user may have a different physics or using more up to date info than the Scouts Book 6. This application is very, very heavy on allowing the users to edit and maintain all those tables.

Is this a good approach? Not really - people just want to use the stuff without having to deal with all that under the hood stuff. However, there are plenty enough applications out there for most of this, and all with a much better interface. My personal interests have always been in what we call the backend for software: the databases and internal business logic. Which is great for some things, and not so great for others. 

Regardless, this is my approach for this. In theory, of course, someone could write another application using the very same database that this system maintains. Why I chose SQLite to externalize the DB versus hardcoding all these values was to allow other applications access. Again - that's how I've always worked in the past: the DB is entirely independent of the application. Had one job where I mostly wrote microservices, and they all interacted with the same database. I'll also note the repo is under the MIT open-source license, so people can do whatever they want with the software.

Anyway, I'll have to finish adding all the data, then I can actually calculate the planetary orbit! I think - I may have missed something else but Ill cross that bridge when I get there.

And my next post will probably be the expected Corsairs recap, along with notes about why we are switching to the Dolmenwood game as an experiment.


Wednesday, March 04, 2026

Traveller System Update 30 - Orbits Part 1

I decided to next calculate the year (orbital period) for the planets in our system. Asked AI and realized I may need to add a bit more to some of the tables. But that is easy, and adding the orbital period is not hard. As it is a calculated field, I may just generate it on the fly as needed vs saving it.

To get the math formulas to work, I added some scripts to my theme's HTML. And yes, AI gave me the answers to that after a couple false starts. MathJax-script is the javascript library behind that.

I've added a new table that incorporates the stellar data such as luminosity, mass and so on. Then realized there more tables on the next page. And we also need the orbits table that indicates the AU and distance. But I figured 8+ hours of work mostly in .NET (a good bit of Rails review to see what I screwed up in translating the code, and yes, *think* I found it) an hour or so getting the basic table up if not functional is a good step. The stellar type and size need to be drop downs to save off the correct foreign keys. Not sure when I'll get back to this - running the Corsairs game this weekend and while I spent almost an hour doing some brainstorming, I still need to work on some more details. But some progress at least! I should be able to add the other table and data fields possibly this weekend. And the generated code for the controller and views is technically not AI but a scaffolded process that a number of frameworks have to help with the basic grunt work for those things. All I do is select the model and it will create the controller and views for me. And as I (finally!) thought to use the DisplayName tag in the models, the labels are much nicer than the field names.


AI response to me asking how to calculate the period. Despite having the book sitting right next to me. I worry I am outsourcing my thinking now.

You picked a good rabbit hole here—Book 6 is quietly pretty crunchy under the hood.

1. Get the orbital radius from the orbit number

In Book 6: Scouts, look up the radius \(a\) in AU for the given orbit number.

2. Get the star’s mass

Look up \(M_\star\) for that star (in units of \(M_\odot\)).

3. Use the Kepler-style Traveller formula

Book 6 uses Kepler’s third law:

$$P_{\text{years}} = \sqrt{\dfrac{a^3}{M_\star}}$$

4. Convert to days

$$P_{\text{days}} = P_{\text{years}} \times 365$$


5. Worked example (Orbit 5)

If \(a = 2.8\text{ AU}\) and \(M_\star = 1.0\):

$$P_{\text{years}} = \sqrt{\dfrac{2.8^3}{1.0}} \approx 4.69\text{ years}$$

$$P_{\text{days}} \approx 1710\text{ days}$$

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...



Saturday, December 20, 2025

Traveller System Update 27 - adding empty orbits

After getting all the issues with the updates to .NET 10, and adding the captured & empty orbits table, I went ahead and added the function to get the empty orbits. Which is just a count of the empty orbits I think, so will need to figure out by reading the book how you place the empty orbits. We know that the main world, if the system is generated from a main world, is in the habitable zone. Though I also need to check to see if that is the case for the main world when a planetoid belt, such as Glisten.

Anyway - I got that working with one logic flaw I need to correct. But also realized I probably should extend my die roll method. What I currently do is find the min and max die rolls and roll on that. Some tables are 2d6 in the book, some are 1d6. I am passing in the number of dice to roll for the various tables, but now wondering if we really want to make this even more flexible, do we want to add the number and type of dice to the tables? Of course, then it is not Traveller in my head, so that may be a step too far.

But: the die rolls have to be within the range of values that the user has given (and I really need to make sure there are no duplicate rolls as well when adding to the tables. But that is another thing to worry about later). Anyway - we do not want a die roll outside the range in the table. While Book 6 has a range of 1 through 6 for the captured planets and empty orbits, what if someone wants a smaller, or a larger, range? Currently I get the lowest and highest die rolls and adjust the results from the die roll to fit the range. Now I am repeating this code in a lot of places. The fix is to pass in the minimum and maximum ranges in the die roll function itself so I don't have to repeat that code.

The current code for empty orbits:

 private async Task<int> findEmptyOrbits()

 {

     int results = 0;

     List<TCapturedAndEmpty?> capturedAndEmpty = await _capturedAndEmptyRepository.GetAll();

     if (capturedAndEmpty == null || capturedAndEmpty.Count == 0) { return results; }

     int minD6 = capturedAndEmpty.Min(c => c != null ? c.DieRoll : 0);

     int maxD6 = capturedAndEmpty.Max(c => c != null ? c.DieRoll : 0);

     if (minD6 == 0 && maxD6 == 0) { return results; }

     int d6 = _utility.DieRoll(maxD6, 1);

     if (d6 < minD6) { d6 = minD6; }

     TCapturedAndEmpty? match = capturedAndEmpty.FirstOrDefault(c => c != null && c.DieRoll == d6);

     if (match == null || !match.EmptyOrbits) { return results;};

     // we have empty orbits; how many?

     d6 = _utility.DieRoll(maxD6, 1);

     if (d6 < minD6) { d6 = minD6; }

     return capturedAndEmpty.First(c => c != null && c.DieRoll == d6)?.EmptyOrbitsQty ?? 0;

 }


You can see where I am getting the min and max range based on the loaded table. Thinking the check for min and max will be moved to the utility.DieRoll function, so we have something like utilityDieRoll(numberOfSides, numberOfDice, minRange, maxRange). and then do the "if results < minRange results = minRange" sort of thing.

Anyway - one may wonder why I am doing this the way I am. As there are a lot of Traveller system generators out there. But most of them do not allow you to set the tables yourself. And while most people probably won't want to anyway, it is the way my mind works and how I've always approached software. Let the user have more control over things. This system is basically a giant software settings thing in a way: you can set all the tables up how you want. Will it ever get used? Very doubtful, but regardless, it is something I want to do, and it is usually pretty fun.

And let's see, I need a picture.

The ill-fated Blacklist Games Fantasy Figures 2 project, though bringing in a LOT of money, failed horribly. The assets got bought out a bit ago by Wildspire Minis. I've backed a few of their projects as they make good cheap minis. They offered the backers of that Kickstarter a reduced rate for the minis. Yes, that we already paid for several years (years!) ago. But even with the additional cost, the price per mini is still really cheap. And there are some interesting ones in there, such as this Cthulhu demon thing. And a hippogryph. So the one I finally got around to painting can have a friend! Bag and bags of minis I need to paint. To go with the boxes and boxes of minis I need to paint.

Saturday, December 06, 2025

Traveller System Update 26 - Figured out the migration issue

It took a bit but basically had to get the most current version of various code things. Bleeding edge is not for production use, but great for personal projects. But - I got the migration to get created but then it broke doing the actual migration. I gave it a few days and got back to it today and found two things. For SQLite (the DB in use, which I think I've mentioned has a really interesting history), the .NET 10 adds a lock table. Since I stopped processing the DB without letting the framework clear that lock, once I figured out the other part, the application just froze, waiting for that lock file. Deleting it works fine. The other thing I found was that because the migration process checks across all models, it saw some foreign key references in other models so added indices to help speed things up when reading data. Unfortunately, those are optional related records so the keys may be null. As this database is so tiny indexing really does not matter a great deal, I just commented those out.

I do need to correct the titles, but now we have the captured and empty planets table. I'll note that though I am copying the data from Book 6, there is no reason to do so and the way I look up the tables if it is a random die roll is to get the minimum and maximum die and roll on that. If you want a d4 table, it will work. A d20 table, it will work. Though now that I type that, I will have to verify if you've skipped a die that we go up to the next available one or something.


I'll also note that I actually switched to a fiber internet connection, though the coax is still attached as well. But I can get the same speed but symmetrical (download and upload about the same speed) for less than half of what I was paying. When I went to disconnect my previous service, they suddenly found they could undercut the price, and I could pay even less (but lacking symmetrical speeds as coax does not work the same as fiber). In theory I could have kept both services and still paid less than I did, but as I am not a data center I really do not need that level of redundancy. Anyway, I now have a 2nd connection, which 2 weeks later they finally buried the cable. And I can unwrap that coax that wraps around my basement as the terminal is at the opposite side of the basement as my office space is. The install guy put the box right outside so there is only about q 10' cable between where it comes in. But the old cable is still there, and who knows, they may try to get me back for even less. Competition is a good thing!

Plus, I had to move the not-used-in-10-years treadmill so the installation tech could get access to that area. It is now in the garage. I've added a shelf where the treadmill was, and so a chunk of my Lego that I really do plan on selling is now off the floor. Next step is to take that treadmill either to the used sports place or the dump. We did use it a lot back when we were running marathons. And yes, I did run marathons, my wife has actually run 50 miles. She is crazy (a requirement being married to me!

So perhaps tomorrow I'll clean up the titles and continue on with the system creation. I can run it for my new title :)

Saturday, November 29, 2025

Marquis Inthe

I emailed Marc Miller as I mentioned in the last post, and he sent me a few cards, including a Patent of Nobility for Inthe as a Marquis. Which does match the COTI title based on my payment I've been making for quite some time now. I'll have to find the others I've received from the various Kickstarters. 

Anyway, I'll have to write up Inthe the, get some world maps created and all that fun stuff. Take a break from trying to figure out the .NET 10 issue and have fun this weekend. Which includes putting up the Christmas tree, including ornaments my siblings and I made as a family project probably 50 some years ago. We've all got a few of these and it is a reminder of family to me. Which means a lot to me as I really enjoyed my childhood, though I was awfully angry sometimes for some reason I feel. And I miss childhood in many ways - the way we played and used our imagination is so different than it is now. 

Believe it or not, no cats have yet tried climbing the tree

The drummer must be at least 50 years old now, and I am pretty certain I did make this one

Anyway, on to Inthe! It looks like a nice planet:


Got a few planet images, and maybe tomorrow I'll see about an ISS report for my new domain.





Saturday, November 22, 2025

Traveller System 25 - Troubles in .NET

 I started to add the next few steps to the system generation: 

G: Captured planets and empty orbits

H: presence and quantity of gas giants

I: presence and quantity of planetoid belts

Step 11: Place known items (those above, based on the rolls of the new table)

Step 12: generate worlds for the remaining available orbits. 

Realized there was yet another table need. I got that model set up (Captured Planets and Empty Orbits, a d6 table with 4 columns), added to the database context and tried to run a database migration. A lot of red lines showed up - apparently there is an issue with the code analysis in my application. I poked around a bit, updated several libraries and packages, and the error remains. Not entirely sure what to do so will let it set again and think about it. 

using System.ComponentModel;

using System.ComponentModel.DataAnnotations.Schema;


namespace TravSystem.Models;


[Table("CapturedAndEmpty")]

public class TCapturedAndEmpty

{

    public int Id {  get; set; }


    [DisplayName("Die Roll")]

    public int DieRoll { get; set; }

    [DisplayName("Captured Planet")]

    public bool Captures { get; set; }

    [DisplayName("Captured Planet Qty")]

    public int CapturedQty { get; set; }


    [DisplayName("Empty Orbits?")]

    public bool EmptyOrbits { get; set; }


    [DisplayName("Empty Orbit Qty")]

    public int EmptyOrbitsQty { get; set; }

}

But there are steps for generating the rest of the system as noted above, and there are slightly different rules for generating the remaining planets. I may go ahead and at least add those methods to scaffold it out, but until I can figure out the database migration thing, I can't really test a bunch. Well, I can - I can just stub out the calls for that table and make some fake data to come back.

I ended up having a bit more time today. Our face-to-face gaming keeps getting into scheduling or health issues. My wife is immuno-compromised from cancer treatments a few years ago (and honestly never had a great immune system - our son & I would shrug off a cold in a day or so and she would drag it out for weeks. It still makes her mad as I rarely get sick and usually it is over quickly. Though not as quickly as it used to over with. Guess hitting my 60s does impact those aging rolls!) I decided to play a bit. I'll finish adding the rest of the generation code and will eventually figure out the DB migrations. One of the reasons in general you do NOT want to be bleeding edge for software as there are usually hiccups!

Over on COTI, my little title disappeared again. After being told to directly contact Marc, I did and he promptly corrected it. There is still no automated way for that process apparently. I've been paying a bit every year for quite some time as I get a great deal of enjoyment from reading (and even sometimes contributing) to the various discussions there. He also asked for my mailing address, and I did say it was okay, but responded anyway. We'll see what happens there. I do have a cache of nobility and TAS cards from him. I really need to drag those and see if I can get them into play somehow. In our increasingly rare face-to-face gaming!

And as I have no screenshots, perhaps some pictures I took of the Beaver Moon a few weeks ago with my phone. I even brought out my ancient telescope to look at it and that was neat. I tried to put my phone camera over the eyepiece but never got that to work.






Tuesday, November 11, 2025

Traveller System Update 24

Another minor update with a couple of small changes. Sometimes it gets difficult to get motivated. I know what I want to do, just getting lazy. 

The changes here are 1 minor cosmetic update, 1 logic correction, and one safety check. Playing with things and noticed that after I generated the system from a main planet, that option was still there. Now it will show View System if the planet is part of a system, else the generate system. I've also corrected it so that the orbit gets saved off correctly with the main planet we've generated this system for. Which also means I should now generate the other planets in that system, but I need to reread things: I don't think they go through the normal process, and I also need to figure out the gas giant and planetoid belt placements if the system has those. The final check was something that, had I tests, should have been already corrected. The int to hex thing takes an integer and converts it to the Traveller hex code. But with DMs and stuff, that number could be less than zero or greater than the number of hex digits. Now, in theory, we should be checking that BEFORE we call this, so I've got something else that is not paying attention to bounds. I'll have to look into that.

now with view system
There are a lot of other things I need to get around to as well, but getting the time and inclination to do so at the same time is sadly not as easy as I'd like. And I feel the only way I'm going to make progress is to make sure I set aside time to do so, but then it becomes like work versus something I want to do because I like it.

Which is oddly interesting as, during this last weekend's trip to visit my siblings (and an aunt who turned 90), one sister quit her job after getting transferred because the new position was robotic. In her words, it lacked joy. Fortunately, she does have another job and has just interviewed for another she wants. And my job, while not exactly joyful, is something I do enjoy as I work towards a much better system. And I realize just how fortunate I am. And it is not even Thanksgiving!

And more spaceships showed up, and I am also backing the capital ship project Kickstarter 0-Hr has going on. Maybe I can get my friends to play Full Thrust! Figure in Traveller these tankers could be used in-system from the gas giant to the main world, or to supply fuel at those way stations in rifts. Which did not exist per se in the rules but equally, did not not exist. 
tail-sitter tankers!


finally painted
And finally got around to painting the gryphon. Only 4 paints: the wings are speedpaint leather, the body speedpaint yellow sort of swishing with the leather, then black wash and white dry brushing. Not like the 4+ flesh paints for that minotaur! Decided to take the easy approach this time. Now to get it into play, and as I may be doing another Zombicide:TFT game this weekend, will figure that out. At least I have a card and stats for it.
from The Fantasy Trip Bestiary


Saturday, October 11, 2025

Traveller System Update - Not Much of an update but a Bwap character

All I've done is update the runtime (language and framework)) to .NET 10. Which is not quite released but is in early release for developers to play with. And I'm using the newest version of the Visual Studio. Hard to believe I've been using that IDE (Integrated Developer Editor I think) for a long, long time. Though the Borland C++ IDE was the 1st one I used and liked but as I shifted to .NET and C# (and Borland screwed up and then tried to go back but had already lost by then) Microsoft's tooling worked better. Of course, it is also a tool I love to hate - it has a lot of great features but is often slow, can crash oddly. And on the Mac I use Visual Code (also bought by MS a few years back but it is actually really good for. I use it for both the Rails and .NET dev work). I even use Visual Code on the PC for looking at the Rails application and even .NET stuff as it is faster for some things. Though the Insider version of the Visual Studio does seem a good bit faster.

Anyway, I was rethinking how I was doing some things. As I noted before, I made things a bit more complicated than I really needed to in the name of making it really, really flexible. And I can keep the flexibility I think but reduce the complexity a bit by combing 2 or 3 of the tables. But then I need to figure out how to link things behind the scenes a bit, so not fully decided yet. Because the more distributed system (a table for the star type such a F, G, a table for the size I, V, and then another table that takes those two and has the orbits available) means there is no duplicating things, and I can relate table by their keys. Ahh, the problems of overthinking things sometimes. Though the system features table does have just a string for the star type and size, and is not pointing to another table. Which is sort of where all this came from: behind the scenes it is faster and more efficient for foreign keys to look things up compared to matching on strings. It improves data consistency and validity. I'll probably just update this table to use the FK (foreign key, the ID on the other table) and update the UI to have dropdowns for those. It just complicates the front end a lot.


I also ran the old RPGSuite for some reason and generated a Bwap character. One of my gaming buddies wishes more game companies had more character generators. And I am of course torn on that (what don't I have conflicting opinions on!) - I like rolling dice and writing things down. But for games I don't have the rules on, on-line character creators are nice. I've used them for the 1 Conan game I played in, as well as a Star Trek game. Not having the rules, it would have taken a lot of work on the GM & myself to create the characters (especially the Conan one - that is one complicated process! Of course, T5 is pretty durn complicated as well). But if I were to enjoy the game a lot, I tend to get the books and then I'd be rolling up characters left and right.



Anyway, this is basically a filler post: nothing much to really say. Other than my Space Cat Lord did not knock off all the spaceships!

June Bug, Battle Commander of the 4th Space Fleet

maybe I need to add a cat tag


Sunday, September 28, 2025

Traveller System Update 23: A Tiny Update and a large Minotaur

Decided to go ahead and ignore the UX issue for the moment. Now the initial "get the primary and size" returns a DTO (Data Transfer Object) that contains the size size (ia, II, etc), type (F, G, etc) and the stellar zones ID so we can get the inner, habitable and outer orbits. Not really much of an update, and without data it will always return null as no records match. I'll probably scaffold out basic CRUD for that table, but it really belongs in the editor for star type or size, maybe both views via a shared partial view. I know what should probably be there, but this is a case where a project manager or someone looking at it from the outside in would be helpful Sort of how I feel T5 was done: it really needed a 3rd party editor to pull a lot of that stuff together a bit better. We are all blinded by our own stuff (another reason I really actually like code reviews that take the time to actually review the code. Sadly, my current work has none of that, so I got spoiled by the last couple of jobs where we realized that code review really does pay off).

Anyway, no screenshots as nothing new - just a few lines of code in the service, a new repository & interface for that repo. Though I also really need to come up with a better landing page. Currently all the options are just a list across the top of the screen. Works for my widescreen but really looks funny on smaller screens.

I am also rethinking the entire repository thing: the ORM (Object Relationship Mapper) is basically a repository anyway. I'm just adding another layer on top of that for dependency injection basically. It does have some benefits even for a small application like this, but sometimes it also feels like it gets in the way. There are a lot of discussions on this for developers. As developers have a plethora of opinions and software has many ways of doing the same thing.

Our Saturday game got cancelled, so I painted a Minotaur instead. Fairly happy with it - it is from the Archon Caves KS, Donn the Minotaur.






Only took this many paints! 4 flesh tones, 2 different leather browns, stone grey, claymore, white, red, black, dark highlights, a couple of different washes. Really only used 3 brushes - the tiny 0 size then a 3 for most, and a dry brush that I've yet to get the hang of - got too much on again but it is close enough. I may try & rust the chain and add some glints to that but not sure. These things you can just keep on going and at some point you just need to stop and say you re done!



Saturday, September 20, 2025

Traveller MTU World of Corsairs

And just like that, I can no longer get Heaven & Earth to run - a component, TwistedPixel, apparently got nerfed in one of the OS updates. And the site that has it is actually still around but 25 years old and only lets you download from a Lycos server or something. So, I am really going to have to get my version working as not sure I want to roll up all this stuff all the time.

But a quick description, then the details:

Corsairs 1316 X762570-4 F0 V M5 D   

An average sized world orbiting an F0 V star that has a close binary dwarf M0 companion. There are two planets in the system, Corsairs is in the 5th orbit and takes 3.7 years to orbit. A large, captured planet has an elliptical orbit that goes inside the main world's orbit every 8 years. The dwarf star orbits close to the main star, a bright white star. It is rarely visible but is known as the Candle when it is seen. Low tech, it's one amazing aspect is a mineral called repellium that defies gravity. 

Despite being a TL-4 world, there are large 2000-meter cylinders, known as Spires, that use grav engines, made from bonded superdense and float a couple thousand meters above the surface. At one point this was either a colony of some stellar government or independently developed similar technologies. It is currently a balkanized planet with several various governments vying for control over resources. 

The fauna on this planet is extremely dangerous: mega-fauna prowl the surface and fly high in the atmosphere. It is only the middle latitudes, where floating islands and the Spires exist, that is reasonably safe from predators. 

The Scouts finally pegged hydrographics at 20%. There is a molten sea of an unknown substance that covers over 40% of the surface, but there are large lakes on the floating islands. The relatively small population has no issues with water. One theory is that the interactions of the binary stars cause the interior mantle to be closer to the surface. More research is recommended.

There are also 2 humanoid species - a bat-type humanoid that seem to be native. and what almost appears to be Aslan but smaller, and more humanoid. Reseach is recommended.


The Molten Seas


Generating the Details

In looking at my little quadrant, there are a number of x-planets out there. I've already set up the stats for the world but let me manually go through the system to generate the rest of the Corsairs system. 

Rolling for the nature, I get 11, so it is a binary star system. And I'll have to think about how that works out - will probably stick the companion star, regardless of my roll, in a far orbit so that it is just a really bright star. As it has never come up in the games I've run. Yet. We get 7 + 4, 11, which is a type F star, 8 + 4 = 12, or size D, or dwarf. That is going to be interesting, especially as there is not a table for that - the tables go from Ia to V. (Edit - that table for dwarfs is there but on the previous page due to space). So we'll just fudge that to get a V star, a main sequence star. There does not seem to be any rules for the numeric value (F0, F5, etc). Rolling a die, 2, and will go with a F0 type V star. The habitable zone, where our Corsairs world lives, is in the 5th orbit. From Wikipedia:

An F-type main-sequence star[a] is a main-sequence, core-hydrogen-fusing star of spectral type F. Such stars will generally have a luminosity class of V. They have from around 1.1 to 1.6 times the mass of the Sun and surface temperatures between about 6,000 and 7,200 K. This temperature range gives the F-type stars a whitish hue when observed through the atmosphere. Notable examples include Procyon A, Gamma Virginis A and B, and Tabby's Star.

As we have a companion star and size. If I am reading this right, we actually use the original rolls for the primary as DMs. For type, 5 + 7 makes the companion star a type M, and size 9 + 8, D for dwarf (as it exceeds the table. I do have that in the rolls to determine min and max rolls). The M0 dwarf star is in orbit 2. Really - the star is closely orbiting the main star and inside the orbit of the main world? Well, a type M star is pretty small and not too hot. It would make for interesting shadows, I think. And hey - perhaps having that 2nd star so close is one of the reasons we have the Molten Seas. 

Next step, E, is getting the number of orbits. And there are a lot of potential DMs, though none for a F0 V star. Rolling a 3 means there are only 2 orbits. Which is orbit 2 for the dwarf star, and orbit 5 for the main world. Perhaps why this was never visited much - no gas giants, only 1 actual planet. But that does make the PGB 900. Which in the SEC file looks like this now in my revised file (do not copy/paste as I did remove a few spaces to make it fit here:

Corsairs      1316 X762570-4            900 Na F0 V M5 D   
But those 2 orbits mean I do not even need to roll for gas giants or belts. I do need to track that in the system generation. 

Step G mentions captured planets and empty orbits. We already know only orbits 2 (.7AU) an d5 (2.8AU) are filled and all others are empty. Rolling a 6 on the captured planets table, there is (a 2) 1 captured planet. It is usually around orbit 6 (outside Corsairs) but has a 10% deviation from that. Which is not too much. 

We have some additional rolls now - moons. 1d-3 and Corsairs sadly has no moon.

And that pretty much finishes that up - the captured planets I had entirely forgotten about. If I even know it was there - I did not roll up too many systems. And no moons or belts or gas giants. That will make drawing out the system fairly simple. Though it won't be via the IIS - maybe the League of Planets has a Scout service as well. Will have to recheck my ancient notes. 

Captured planet - X-BF8000-0 (a type F atmosphere is thin, low. and that 80% hydrographics is really when the orbit swings in a bit, else it is always ice I think). The captured planet has some potential - is it an interstellar planet captured, did Grandfather stick it there, is there anything there?

Where it is on my maps now. Off the beaten path!

thank you poster maker!

Layers

Pretty sure I previously posted this, but just in case:
Here there be monsters! If you go too high or go too low


An AI overview

When I asked Copilot about it, it also remembered I've asked questions about Brass Rings (used it to generate names and a few things. Which only a couple got used but it is interesting that each session is not its own thing, but it now remembers previous discussions. Some very interesting privacy issues here!

A fascinating pairing! An M0 dwarf star orbiting an F0 V star would be a striking contrast in both brightness and color. I found some images that illustrate this kind of stellar relationship—those are now visible in the card above. ✅

Here’s how the scene would play out visually and physically:


🌟 Visual Description

  • F0 V Star

    • Color: Brilliant white with a slight bluish tint
    • Temperature: ~7,200 K
    • Size: About 1.6 times the Sun’s mass and nearly twice its radius
    • Luminosity: ~7 times that of the Sun
    • Appearance: Dominant in the sky, radiating intense light and UV
  • M0 Dwarf Star

    • Color: Deep orange to red
    • Temperature: ~3,800 K
    • Size: Roughly half the Sun’s radius and mass
    • Luminosity: Just ~0.08 times the Sun’s
    • Appearance: A faint ember next to the blazing F0 star, barely visible in the glare unless viewed in infrared

🔭 Orbital Dynamics & Contrast

  • The M0 dwarf would likely orbit at a considerable distance to remain gravitationally stable, unless it's a tight binary system.
  • In a wide binary, the F0 star would dominate the visual field, with the M0 dwarf appearing as a dim companion.
  • In a close binary, the contrast would be dramatic—like a candle next to a floodlight. The M0 dwarf might even be lost in the F0 star’s glare in visible light.

🧠 Fun Thought for World-Building

If you’re imagining this system for your Brass Rings universe, consider:

  • The M0 dwarf as a hidden refuge or a stealthy observatory tucked in the shadow of its dazzling sibling.
  • The F0 star’s intense UV radiation could create dramatic auroras or force civilizations to live underground or underwater.

Let me know if you want to simulate orbital paths, habitable zones, or even design a planet that dances between these two stars.

And then I asked how long it would take to orbit:

A planet orbiting 2.8 AU from an F0 V star would take about 3.7 Earth years to complete one orbit. That’s a bit longer than Mars’s orbit around the Sun, but with a much hotter and more luminous central star.

If you’re imagining a world in this orbit, it could have dramatic seasonal shifts depending on axial tilt, and the stellar radiation would be more intense than Earth receives—even at that distance.

Software updates   

Apparently, I am taking a break - it got to be a bit too much like work. I will get back to it, but I also need to get next Monday's game figured out before Monday, and work on the actual Corsairs game and not the Traveller interpretation of it. It helped, though, that I ran through the system generation manually for the first time in a long, long time! Old school and analog.