Saturday, July 29, 2023

Random Traveller World: Felid/Orret in Far Home

Realizing that most of my "popular" posts are Traveller posts (well, this is ostensibly a Traveller blog! I just throw everything else as well into it) I decided to do a random world map. Hit up the Traveller wiki and hot random page until a world came up, Felid. From the wiki entry:

Felid is an agricultural garden world with a near-ideal, utopian environment conducive to most sophonts.

As an agricultural world, this world is a near-ideal environment for producing quality foodstuffs of plant, animal, and other forms. Quality foodstuffs are a major export commodity for this world.

Its economy and population are rapidly growing and living conditions are expected to incrementally rise barring outside forces.

It is a Non-Aligned world dominated by human sophonts located in the Orret Subsector of Far Home Sector.

This world-system hosts a Military Base, usually associated with military ground forces, which may be located on or off-world.

A757746-A is the UWP, a nice class A port, a bit smaller than Earth with a thin atmosphere, 60% water and a representative democracy of about 50 million people. 

First, a world of 60% hydrographics:



Then some sort of IIS forms perhaps. Though this will sort of work. Just don't print it! Grabbed some of the info using Heaven&Earth. I still really like that program!

Anyway, a quick pure Traveller post put together with Fractal Terrains, GIMP, TravellerMap.com, the Traveller Wiki, Google Draw and Heaven & Earth. 

One of the members over at COTI wants more than a simple explanation - they wanted flavor text as well. As in - what does the world smell like and similar things. Guess I have a hard time with that since a world is never a single thing. Though smell could be omnipresent for a hellworld or something, but anything with a biome habitable by humans I would think would smell and feel different depending on where you were. And having said that - perhaps a world has a slightly higher level of methane or something, and so yes, in that case the world could smell like rotten eggs. So hmm, maybe...

Oh, and I did correct the freight part of the software - it is the number of lots, then for each lot you do the size in dTons. Still stuck on figuring out how to get it signed and all that for upload into the Android app store. They don't take personally signed apps, and while I have an app key from them, cannot figure out if that is somehow used to generate the signing certificate. I think it is, but I'll admit to getting confused over all that other than a vague idea of signing sofware. *sigh*


Saturday, July 22, 2023

Organic Towns Month 4: Windemere Crossing and solo Traveller

As I do my monthly organic towns, I am reminded of not one but two TAS articles: in JTAS 13 and JTAS 18. In JTAS 13, Real Time Traveller:

The boardless nature of Traveller, however, permits greater flexibility. With some ref's notes small adjustments, a satisfying solitaire Traveller campaign can be conducted on the basis of a few minutes each day, by playing the game in "real-time" terms. Make one day in your life match one day in the game. After breaking down Traveller events into daily steps, most actions (a patron search, selling cargo) can be handled in the few minutes it takes to throw dice, consult a table, and note the result in a continuing log. 

In JTAS 18, Travelling Without a Starship:

A single planet alone can furnish multitudes of adventure ideas. Tens of millions of square kilometers of surface area are open to ventures in dozens of climates and terrain types, among many cultures and subcultures, and among different levels of civilization . . . any referee could keep games going for years on a single isolated planet, with no need for repetition of adventures and no need for a spaceship. Some vary successful adventure novels have worked this way. 

Of course, I have tried the Zozer Solo rules and while that works, I may have to expand out to see about the mythic DM or some other process. But anyway, doing my monthly turns at Organic Towns is essentially the same sort of thing - roll some dice, note the results, and move on. While I'd much prefer a real time game with people, adulting is hard to get everyone coordinated! Though our group does have 1 retired gamer, I'm still 6 years out (unless I win the lottery, but of course, I'd have to actually play to win!) Not sure if I'll return to that solo Traveller game - it was not as much fun as I was hoping. In fact, I do find most solo games pretty boring. Though world-building is fun, I am not sure it will actually go anywhere.

And I seem to recall a trading without a starship article as well - I may have to dig through my actual print copies as pretty sure I read it (and yes, I do have the Journal CD but as I've said so many times, I much prefer reading "real" books. I'm old, so get off my lawn!)

Month 4 of Organic Towns for Windemere Crossing

Moving on to month 4, we are still constructing our western gate: workers are expecting to have it completed next month. In the meantime, the taverns in town have benefitted from the workers thirst and hunger.

First, our building roll: the tower (which honestly I had forgotten I stuck there but as this was a military outpost in the past, it was part of the infrastructure!) And it is a level II tower, so, this morning the guards spotted an ominous sign: hundreds of birds migrating the wrong way!

Next, our moral roll, slanderous graffiti regarding the settlement leaders has been appearing more frequently. Wonder if this is the same graffiti artist that was writing those bawdry limericks on the barracks a couple of months ago?

Interestingly, other than graffiti, there are no reports of crime. Could be our newly enlarged town guard is having a beneficial effect on our fair trade town.

At this point, the town hall is complete, and the first town meeting took place with a bit of festivity. The Sea Elves are still looming in the back of the meeting hall, with the grand table for the Burgermeister, sheriff and Nomehi Wirididea representing the town, the police and the local merchants. A decision was reached to expand out the market. As caravans pass almost daily along the Ocean Trade Route, they want a bigger piece of that pie. And it could make Windemere Crossing a destination instead of a waystation. This will cost us 36 SP and take two months to build. We're also going to add a pasture to help feed the town, and the fencing should be completed next month.

There was rumor of a retired merchant fightng a weaver outside of town, but no one is certain of that, and Rennor, who seems to know everyone, has not said anything. And she does like to break up fights. The new fine tooling from Bernice Lister (town guard who dabbles in leatherworking) and Durdo's wife Viola have started selling some wares in the merchants' quarter. Sheriff Sprigbasher did buy a nice new coin purse with his initials stamped on it from them. As he did get a small raise now that he is leading two new guards. 

The spearmen train daily in the space behind the barracks. They also patrol outside the city walls in pairs, while the town guard stays inside the walls. 

With the new housing, pastures being built, and Durdo and his wife welcoming twins, our population is now 348 residents. 

And asked for some fantasy spear carrying soldiers patrolling outside a walled townvnext to the desert and got this. Though I could also image dive in the web but then I feel bad when I don't attribute who did that art, then I remember the AI is trained on that and also does not give proper attribution. We do live in strange times! But I do like to browse through art and find things that seem interesting. I am so glad people do share their stuff online!


I am also tracking a lot of these updates in the Windemere document (and got lazy and just doing some copy/paste) but thinking some stuff I really need to consolidate better. And I know - I keep saying that! For someone who likes organization, I am not that good at it!

World Explainer

I've stalled on this (really, me, stalled?) Work got more interesting than I like (we lost one of our developers as he moved on to a better position, and he was the primary source of a lot of institutional knowledge. So just me and a junior developer, though I am trying  to get a friend from my last job hired as he was laid off last week, and would be a really good asset for my new job). Just need to figure out the OAUTH and signing thing and should be good for the Android store. Though I do need to re-read the freight part as that is not 100% correct - think I need to do lots and tons per lot or something. I may finish that, but the deploy as a test application is swirling around the "I've already got too many software things I need to keep track of" situation.  Plus I've not heard back from Marc Miller so that also is a bit bothersome. Though he does have a fairly liberal view of this sort of thing, I don't like to make assumptions!

Sunday, July 09, 2023

Zombicide Writ Large, Android Developer

We played a round of Zombicide this morning. Between a 2nd set of tiles and an expansion, we decided to do a large run from the top of the board to the bottom. Only 1 player character (out of 8 - there were 4 of us playing 2 characters each) managed to barely get out.


We placed a few targets which had the red-level weapons, though we cheated and allowed their use before you get to the red level of experience. As with most Zombicide games, we were really close to at the end then a series of very unfortunate spawnings killed us all. If I had more zombies we may have had more than one survivor. I need to remember to bring spare zombies as I do have a few from various Reaper and Fantasy Series that would work just fine! I've also started painting some of the characters. It is slow going of course! And now wondering if I should paint her skates white along with her apron. Probably will! and then figure something for the base. I just like her as a roller-skating waitress carrying a chain saw seems like a bad idea, but a lot of fun to play!

The Abomination is painted as is one of the new characters I got in an expansion pack. As always, we had a pretty good time even though we all died. Again.

I also am moving forward on the Traveller World Explainer. I've opened a Googe Developer account, and I am working on figuring out the remaining things I need to do to get it there. It will be in test mode, and so far I've only assigned my email as a test account just to see how and if it will work. But I am slowly making progress. I need to also follow up and see if the Windows store has the same sort of thing: I can put it in test mode and only have a few emails with invitations to test it.

That's my immediate goal. Longer term I do really want to get an entire trade tracker back up and running on the two operating systems and integrating with TravellerMap. It would look good on my resume to be published in 2 app stores. Though I don't plan on changing jobs (despite losing the 1 developer who had been there the longest and had the most knowledge. I am still fairly lost in all the systems and how and where they go. Makes me think the computer skill in Traveller is very, very broad and powerful! But as that is a game and not a simulation, all good!) Hoping this job will last until I retire in 6 years. However, I've found that no developer seems to last more than 2 years at this place. And the biggest reason I think is the company itself: it is an actual manufacturing plant. The benefits are wrapped around factory workers, which, coming from a technology worker background, is an entirely different thing. I now know just how spoiled I've been for a lot of things in my working career. Though things are changing as I think the owners are becoming aware that this is really an issue (institutional knowledge is something that cannot be under-estimated!). Hoping I'll last long enough to both get that institutional knowledge and manage to document everything so it is not as crazy as it currently is.

Next post should probably be another Organic Town turn to see how Windemere Crossing is going. I need to actually put some of those details in a better format so they can actually be used. One of these days I'll figure out the best approach is for me! And pretty sure I say that every 5th post or so...I am nothing if not consistent!

Monday, July 03, 2023

World Explainer Part 2: Passengers and Freight

I finally decided to email Marc Miller about publishing my little software application in the Windows and Android store. So far, no response, but hey, at least I am finally getting the courage to ask. It would be pretty cool to have a published application! I could hang out with the other cool Traveller developers on COTI ☺. 

I've also started on the next phase of things: passengers and freight. The downside of that is we need the destination world info for those calculations, so I'll have to get at least the population for the destination system. The previous time I did this, I actually had all the worlds within the jump range of the ship and calculated for each of those. I'll probably end up back there. Almost wondering if I could resurrect that version as I do have the source code. It's just a non-supported version of .Net and had some limitations. Though I am using parts of the code still.

Anyway, I still think if I share the directory, you can install the software via the PowerShell installer, which does ask if you want to trust that self-signed certificate. Why I do want to get this published with a real certificate. Well, that, and it would be pretty cool to have software published in at least one application store. 

I should have this 2nd part completed in the next few days, depending on work and other things. I've added the passenger table to my set of text files that get included with the application on install. Though I could not find them when I installed it, though I did look in all the usual places that Windows hides these things.

The button does not do anything yet, but I did some code cleanup behind the scenes that should help make it easier to expand on it. 

I think a lot of those things will eventually move back into a SQLite DB and then I'll have to give the users some access to that. I'll definitely do that when I add in "search the TravellerMap for systems". Though in all honesty, if you have internet access then that map gives you everything you need. But I'll be caching that data, so in theory once you download a sector, you have a local copy so have off-line access. At least that is what I did before. 

And sadly, my Kahrun character in our random-roll Tiny Dungeon game was killed by a lizard. She was often the most-hurt character in that game - a magnet for damage. Ursa Major (she was a bear person) was a lot of fun to play. Not too bright. As the group ended up outside dungeon at a random evil temple thing that was oddly adjacent to a grain silo, and our mission was to find food for the town, she attacked the lizards at the silo. First death of the group. Fortunately for the game, as it was on a marshland, and they did kill off the lizards, I now have a lizard character that will join the group. Not quite as powerful (we had gained another trait after our 3rd session) but should still be fun. I found it odd that they wanted to give me a freebie trait to be on a level playing field. I'm quite happy with starting all over - Ursa took some risks and died, so I start new. All the characters in a game don't have to be the same level. Most systems it becomes harder to level up the higher you get, so it all works out. This game we were just upgrading every 3 or so sessions, so in theory I'd never catch up. But hey, I am not a power player, I just play and have fun.

Pretty sure I've posted before about playing RPGs with mismatched characters in terms of skill sets or abilities (heck, this blog is a couple decades old so probably covered a LOT of things over the years!). Seems like most people want all the PCs to be the same power-wise. I think more interesting dynamics is a mismatched set. In fact - we have a little salamander type of character: he has to hang back as if he gets hit, he is pretty much toast. But he is our healer, and rides around on the treant character. Anyway, perhaps I'll post about that adventure soon.

And for those living in the USA - Happy 4th of July!

Wednesday, June 28, 2023

Organic Towns Month 3: Windemere Crossing

Slowly adjusting to the new job, so thinking I may be able to run a game again soon (I do NOT do well with change, which is an odd trait for a software developer!). And so we move to month 3 of our exploration of organic towns changing over time. At this point we have 78 Settlement Points to spend, and in looking at last month's progress, we have a couple of milestones.

First, our barracks is now completed and while costing us 10 SP/month we can now have real military units. Which are also expensive to keep, but with possible Orc attacks, and our Dwarven King Khermumi Axechest wanting to, well, not quite invade, but mine, the neighbor's mountain, a real military may be a good idea for this border trade town. And in looking back at my previous posts, I do not seem to have a consistency with the SP, though going with the spreadsheet should help a lot. Our guardhouse is also now complete, so Sheriff Sprigbasher can have a couple more guards beyond Deputy Newtonson. And gives us a -1 against crime as well as costing another 5SP.

Our townhall is halfway completed and will be ready for Burgermeister Hatheo to move into and convene town meetings next month.

We're going to build more houses, basically renovating some of the existing structures. Our population is growing - adding 13 people this month to bring us to 335 people living full-time in Windemere Crossing.

And I just noticed the gossip table. A town warden (one of the new hires) is planning to start a business with a shop keep's spouse in a basement. Hmm, so I'll need to generate a character for our warden, and either pick an existing  shop keeper or make a new one, and give them a spouse. And what sort of business? Rolling on the people table, well, hmm, squire does not work. Unless they want to start a squire's assistance business which seems unlikely. But a leather worker: okay, they want to start a leather working business. We do have a tannery outside of Windemere Crossing, Durdro's Tannery. Durdro is now married, and his wife and Bernice Lister are starting a fine tooling business where they can do stamping and fine leatherworking. Now to add that to my PDF!

For our morale roll, a bard has written a song about a settlement hero which is now popular in the taverns. Another first time guard, Grace Carver, managed to break up a major fight by herself in one of the alleys in town. Though she swears it was all entirely accidental, the song has been embellished quite a bit and while the 1st version had 2 verses, it is up to 5 by the time the players will show up. And asking ChatGPT for a bard's song about Grace Carver:

Here is a song I wrote for you. I hope you like it. 🎵

Grace Carver was a hero brave and bold

She fought with skill and courage untold

She faced the dragon in its lair of gold

And saved the kingdom from its fiery hold


Grace Carver had a heart of purest light

She helped the weak and stood for what was right

She healed the wounded with her magic might

And sang the songs of hope throughout the night


Grace Carver was a legend in her time

She inspired many with her deeds sublime

She traveled far and wide in every clime

And left behind a legacy divine


Grace Carver was a hero brave and bold

She lived a life of honor and of gold

She died a peaceful death when she was old

And now her story will forever be told

Huh, well that will work! And really embellished from stopping two teenagers from fighting!

No crimes again this month - the guards are paying off!

Our building roll is at the workshop: sadly contaminated ores cost us 5SP this month.

We're building out a military (the town guards, two of which are mentioned above, are built into the cost of the guardhouse. We are upgrading our militia to add spearmen at a cost of 10SP/month, increasing our defense and attack values. We could add archers as we do have a level II wall which would really increase our defense value. 

We're going to start updating the gates as well. Those are expensive and will cost us 50 (+5!) SP which takes us close to the end of our SP to spend. 

Quick summary:

  • a bard has written a song about Grace Carver, town guard
  • no noticeable crimes
  • a contaminated ore delivery cost us more to build our first heavier duty gate (the western gate).
  • the new gate will be completed in 2 months
  • town hall will be complete next month
  • the barracks is complete
  • we've uptrained our militia to a squad of spearmen. I'll have to outline that in another post
  • we've added 13 people to Windemere, our squad of spearmen and 2 new town guards fits within our 13 new people.
  • more house renovation for the new people, though we actually do have a housing surplus. 
And now to update my spreadsheet, and see what sort of AI pictures we can get for a new city gate:

Think I liked this one of the 4 it generated. 


Saturday, June 24, 2023

A Fate Game: Rocket Rangers and Saturday Gaming

One of our regular players is out for a few weeks, so we switched gears for a short pick-up style game and are in the middle of a Fate-based game, Starblazers. The referee made a nice timeline for us and it is very much pulp inspired. I wish we could use the 2 technical manuals I have that would work: the International Rescue (aka Thunderbirds) and the Dan Dare book both have a lot of things that would work in this game. And really strange - apparently that Thunderbird book is hard to find now. A few more years and I may be able to retire if I sell it! Assuming you can actually find someone willing to actually pay that much.

Anyway, I used an AI to draw some older pulp SF characters, and this one spoke to me:

He's an older Ranger, never commissioned. His parents were diplomats on Mars which is Russian-controlled. He spent his childhood out in the red rocky canyons and got to know the Martians. Joined the Rangers when he was 16 by lying about his age. He met the other player's character in the siege of Albraster II, when after-action they got drunk and ended up in the same cell. 

A bit of a country boy, he is a crack pilot. Which really worked out well in our first night's game. As I roll really badly generally, I maxed out that pilot skill. We had some good dog-fighting out past the Kuiper Belt with some aliens on our way to rescue the passenger ship Pollux. Between my piloting and Captain Willywhistle's gunnery we managed to shut that downright quickly, then a similar battle against the pirates attacking the passenger liner. 

It was a lot of fun, though I think it could have been even more fun at a table. I'm using one of the 0-Hr retro ships as our Space Ranger ship:


And I had enough smaller shuttles that could work as the fighters. And as per the heisting of the Xuan Wu I have a luxury liner or two that would have worked for our boarding actions. However, we're doing this over Discord and so far, it has been all theater of the mind.

It has been a blast. Interestingly enough, when asked what we wanted to do and pulp SF was picked, I did ask ChatGPT for a good plotline. This is what it gave us (and yes, Lana is our technical & comms person):
World: Zalaxia, a planet in the Andromeda galaxy, where humans have colonized several cities and outposts. The planet is rich in minerals and exotic life forms, but also dangerous and unpredictable. The native Zalaxians are a reptilian race that resent the human intrusion and often raid the human settlements. The planet is also plagued by cosmic storms that disrupt communication and navigation.

Mission: Two space rangers, Rex Starfire and Lana Solaris, are sent to Zalaxia to investigate a distress signal from a mining outpost. They discover that the outpost has been attacked by a giant worm-like creature that burrows underground and devours anything in its path. They must find a way to stop the creature before it reaches the nearest city and causes more destruction.

Possible plot: Rex and Lana arrive at the outpost and find it deserted, except for a few survivors who tell them about the creature. They follow its trail and encounter several obstacles along the way, such as hostile Zalaxians, cosmic storms, and mechanical malfunctions. They eventually catch up with the creature and use their weapons and gadgets to fight it off. They discover that the creature is actually a bio-engineered weapon created by a rogue scientist who wants to wipe out the human presence on Zalaxia. They manage to destroy the creature and its control device, but not before the scientist escapes in a spaceship. Rex and Lana report their findings to their superiors and vow to track down the scientist and bring him to justice.
Interestingly, over on COTI CyborgPrime is playing a ChatGPT-refereed game and it seems to be going really well, though I've not really followed along, While the whole AI thing is changing a lot of things in some ways, it can be a useful tool. Until the T-1000 comes along I suppose!

Anyway - we are using our toys for our Saturday games where we do meet in person every other week or so. Last time we started a random dungeon crawl using the Tiny D6 RPG system, and we're rolling up the dungeon as we go along. A no-stress RPG game. I decided to play a bear character, and a roll of the dice and she was a female Kahru. Her name is Ursa Major, so she is a star to me! Pretty much a barbarian bear though there are no classes in this game from what I can tell. But I picked tough, strong and berserker as traits and if that does not scream barbarian fighter I don't know what does. Oddly enough another player picked a tree person, and I am really trying not to have Ursa start scratching her back against him!
We used the minis at hand, but I am painting a bear now that will work (though it is a bear without a 2-handed sword, but the only bear I think I have. Unless there is one somewhere in those Bones boxes that I've not gone through yet. In 2 years or more...) And yes, that is a little lizard guy perched up on the tree character. Not too string and he is our healer. It too is a lot of fun.

And there is a finally - I am slowly getting adjusted to the new work. It helps that I have 2 work from home days. So I am hoping that I can run the OSE game after we get to a good stopping point in the Delve game (of which we're on that short Fate hiatus while one player is out of touch for a few weeks). So expect some more OSE game prep. And I do need to get the next month for the town stuff, see how Windemere Crossing is faring.

Friday, June 16, 2023

Traveller World Explainer - Phase 1 Complete!

It now handles the classic Traveller basic world explainer. And I've got a single installer now that at least works on my machine...


The installer can be found here on my OneDrive. If anyone tries it, please let me know if it actually works for you as well! What I was hoping was that the text files it uses would be available, but in checking out the installed software (in the .App hidden directory in your local user directory, then poke around) it is not available.

I have a few choices to make with this software. I may add an option to create a random world as that seems pretty popular and now that I've made the validation process an internal service, I can verify that the world is at least technically correct.

I can also add an option to use the TravellerMap API so you can search there. Last time I did this it was a two step process: first I load all the sectors the Traveller map has, then you choose the sector, then I load the systems for that sector for you to choose. If I go this route (and I know I will eventually) I'll have to add SQLite back to the software so I can locally cache that data. Meaning you need to be online for the initial loads, but after that, if I have the data stored locally, I don't need to hit up that wonderful API.

Other choices include expanding this out to use other versions: it is fairly modular the way I built it, so it should not be difficult to add Mongoose & T5 rules in there.

And finally...even though I swore I'd never get another Mongoose book again (while I liked 1e, 2e seems to be going all Judge Dread and things that just are not Traveller to me. As well as the last few books I bought from them just fell apart after reading only a couple of times) they are redoing the world book from Megatraveller DTG. As I only have the Grand Census part of that, I'll probably go ahead & get that book as I do love me some world building! If I go that route, I could add the extended world building in there.

Dang, and I could generate the animal encounter tables. Slowly start doing what Heaven&Earth did (and I still use!) But with public source code so that anyone can use it, fork it, whatever. 

Anyways - let me know where you would like this to go next, and if you install it, if it actually works!

And another finally: starting to review the .Net code at work. And sadly, currently way above me as I am a very small-scale developer. But it is pretty clean code, just heavily abstracted, but following a lot of the MS best practices. So, as I learn from that, hopefully I can apply some of that, if applicable, here.

Saturday, June 10, 2023

Snapshot - Attack on Xuan Wu

Normally we play skirmish games every other Saturday, sometimes board games. As it got cancelled this weekend, and I had thought to bring Traveller Snapshot, I decided to try & play by myself.

First, I had to refresh myself with the rules, which are not really that complicated. And basically an extension of the Classic Traveller rules. And it really harkens back to THACO: there is a matrix of weapons, ranges and armor letting you know what you need to hit:


And it is interesting in that some weapons can be automatic hits - the VRF Gauss Rifle does both a lot of damage and at most ranges you find in a starship, can't miss. Not sure how well the hull will hold up though! Except that personal weapons, even fairly high-powered ones, are not going to damage a starship hull.

Once I familiarized myself with the rules, I decided a small ships troop complement of 5 soldiers in cloth armor were on board. A small 6-person group was going to break in via the cargo bay and try & take over the bridge to steal the ship. I ended up using a spreadsheet to keep track of everyone. And still got confused!

Then the assault began! I picked a deck plan I've not used yet from 0-Hour, and a convenient piece of cardboard is big enough to hold the two posters so I can have the whole set up on a table.

Turn 1, the invaders are in the cargo bay, and the troops are alerted and start getting ready from their bunk room.



Turn 2: the invaders exit the cargo bay. One very speedy person (21 action points so they have a lot of options!) actually gets to the bridge level, to be met by the locked doors. The troopers, knowing that the central drop shaft is covered by the invaders, use a forward access point to get to the main level from the lower decks.

Turn 3 is where a lot of action took place! Our intrepid invader actually rolled a 12 and managed to get past the bridge security system (in hindsight I should have established the goal a bit better, but ad libbed the roll a 12 to get past security and dang if I did not do that the 1st roll! Invader #2 moves and shoots at a trooper who thought he was behind a bulkhead, and gets wounded. Trooper 3 moves and gets off 2 quick shots (-2 DM) and wounds invader 1. Who turns around to shoot at short range and somehow misses. Trooper 4 attacks invader 4, and as the laser rifle does 5D damage, hits him and takes attacker 4 out of the picture. Attacker 2 makes 2 quick shots against trooper 5 and wounds him but does not take him out. Attacker 6 takes an aimed shot at trooper 2 and hits, taking him out of the action. Finally, trooper 1 attacks invader #6 and automatically hits.


Turn 4: Attacker 3 does not get past the 2nd lock, and attacker 2, armed with a light machine gun, takes out troopers 1 and 2. Trooper 3 has 3 quick attacks (4AP each though that -2) and all hit attacker 1, taking him out of the picture. Turn 3 I think I also messed up, as it was complicated keeping this all straight even with notes.

Turn 5: A3 gets through and is on the bridge. The last trooper, 4, moves back to the forward access ladder, knowing he can't get to the main drop shaft. The remaining 2 invaders move up to the bridge, and one is guarding the forward access ladder, and kills off the trooper in the next turn.



In summary, Snapshot is a really deadly game! The to hit matrix is definitely a throwback to wargaming days, and the fact that armor just adjusts the odds of getting hit rather than a damage soaker is one of the things that always bothered me in Classic Traveller. Why I moved to incorporating some of the Striker rules and the newer version of the basic 8+ to hit. But it is the classic way! Plus I got to use one of my spaceship maps! And may use this scenario if I ever run a Traveller game: the luxury liner Xuan Wu was hijacked at the port! The B&W images for the decks can be found on this page over at 0-hour.

It would be less confusing if I were not handling 11 characters. If we play this on our skirmish days, I'd recommend no more than 3 characters each.

Sunday, June 04, 2023

Mixing and matching systems

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

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

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

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

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

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

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

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

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

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

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

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




Sunday, May 28, 2023

Traveller 5: QREBS as a rules agnostic tool

Of course, being a developer, this translates as a "loosely coupled service" to me. Meaning we can use this concept in pretty much any game.

First, the definition for those who may not have the T5 rules (and sorry if I'm repeating myself - I seem to recall I may have already posted something like this before)

Objects. Any item which is subject to QREBS is called an object (or a device, a piece of equipment, a machine, an item, or an apparatus). QREBS is primarily concerned with devices and machinery, but it can also be used (judiciously omitting some parts of the system) with plants and animals, artwork, even books, drama, or music.   

Multi-Component    Objects. Where several objects are combined into a larger item (for example, components combined to become a ground car), the proper use of the QREBS system is to treat each major subsystem separately.

And the actual acronym stands for and how T5 calculates it:


As noted in the rules, this is not something you would use a lot, just as necessary. For instance, you go to the junkyard to pick up a cheaper replacement part. The quality may be the same, but perhaps the safety factor is lower. There are also rules for checking for things breaking down based on the reliability  and quality, and how often you need to check. But for most items, the following applies:
 The most common roll for any of the QREBS values is zero (or 5 for Quality). If values have not been created or calculated, the standard values apply. The most common roll for any of the QREBS values is zero (or 5 for Quality). If values have not been created or calculated, the standard values apply.

 Hopefully within the fair use rules: 

Quality is a measure of the consistency of workmanship, merit, value, or worth of an object. It directly reflects the time period between reliability downgrades. Quality is a measure of the consistency of workmanship, merit, value, or worth of an object. It directly reflects the time period between reliability downgrades. 
The other aspects have their similar definitions. The point is the application of these very optional rules. For me, I can see this translating into a fantasy game as-is.

A well-crafted sword will have a higher-than-average quality, meaning it is also less likely to break down in the middle of a battle, and you check less often for that. How that would translate in game mechanics is that I'd do one of two things. As most games give "excellent craftsmanship" a +1 generally to hit, I'd do that. Or adjust the critical fail so that, if the game mechanic such as in The Fantasy Trip where your weapon breaks, I'd give a saving throw. 

The Reliability score is how often you check for the thing to break down basically, so there is overlap in that the reliability can be adjusted by the quality. 

Anyway - let's create 3 swords and apply these rules to them to see how that could work in a game.

Our barbarian Snorg goes to the bazaar, and there is a weapons dealer hawking his swords. TFT has a sword at 8 gold, OSE at 10 gold. We'll average the 2 for our discussion, so that 9 GP is the "standard" price of a sword. And I'll grab 3 random swords from Dyson's Book of Swords, which I backed on Kickstarter (because I like to use what I get, and it can also be some more game prep!). Having 50 swords, D100 works for every 2. 

  • Sword 1: Shadowcutter. +1, +2 for all creatures that live in the darkness.
  • Sword 2: Lament's Edge. Forged on a distant plane. On the primary plane (which is all we'll stat out to begin with), it is a +1 and +2 against magic users.
  • Sword 3: Krakenguard. +1, +4 against sea monsters (and something our pirate Elf would really want, so perhaps she has a bounty on that)
And while my original intent was to do all 3 swords, it makes this into a much longer post. So we'll just stick with first. And also note that, as per the usage description, this type of thing is really only for extraordinary circumstances. It is not something to be done with every usage, but something that can add flavor beyond just a basic mechanical adjustment.

Shadowcutter



Quality: 8. An above average sword, hence the +1. Though technically the Quality Mod is Q - 5, or +3. And huh, if we share that +1 between normal foes and then the +2 for creatures that live in darkness, this actually works out (and yes, I did actually roll that). This also determines the period for how long that item is good for. While this certainly applies to technical things, it can also apply to everyday items, even swords. This sword should last at least 3 years before having to check the reliability. I'd go with 3 years of actual use - not just sitting in a scabbard. So it should last quite a while.

Reliability (flux roll): 2. Better than many, Shadowcutter will indeed consistently give you the +1/+2 DMs when attacking. 

Ease of Use (flux): -3, hard to use. Shadowcutter was created by the Gahe for a one-armed Drow, so the balance is off for most people (unless you've lost an arm). 


Bulk/Burden (flux): 1, slightly unergonomic. See the note above. It requires a custom scabbard.

Safety (flux): 1, better than some. Unless you are a creature that lives in darkness of course!

Shadowcutter QREBS 8 +2 -3 +1 +1

+1 against regular foes, +2 against creatures that live in darkness. On a critical fail, rather than having the weapon break, its reliability and quality is reduced by 1. When the quality gets to 5 (average reliability) the +1 goes away, and the +2 gets reset to +1. 

So hmm, not sure it really brings anything actually useful to the game like this. Though it does allow you to age weapons when badly used perhaps. But I can see this as a potential thing when looting: roll a quality check (2d-2) and based on that curve, establish the quality of the sword. The other attributes may be useful or not, and honestly, possibly adjusted based on who the weapon was made for vs who is using it. For instance, a great sword made for an Orc is going to have really bad ergonomics for a Gnome trying to use it. The Fantasy Trip sort of handles this via the minimum strength required to use a weapon, which is a simple abstraction. But we're Traveller players: we love crunchy bits! 

Anyway, it was a way to re-read some of my Traveller books, try & bring in stuff I've got, and explore some possible mechanics for additional chrome. 

Software update (for those interested)

I've finally managed to get some tests in for my Traveller world explainer. For personal projects, this is pretty much overkill. But I really wanted to learn more about testing in .NET programming as I may have to start doing some of that at some point. In Rails, we used Rspec and just ran the tests, either the whole set or specific tests. What's cool about Visual Studio is that, if I name the tests correctly, it knows which method is getting tested! And I can run just those tests, and in the editor, can see the results. It is pretty cool actually, and a lot more developer friendly once you get it started.


I'll finish my method for "is this a valid (Classic) Traveller planet" then add in the actual trade codes. Then I may think about a trade roll as well. 

And yes, as you may have gleamed (and I may have mentioned already) I did get another job. Interestingly, I have three tech stacks they use: .Net, Rails, Filemaker. Which is a fairly odd combination, so it seems this job is custom made for me. While the benefits package is pretty bad, the pay is actually better than I was making. It is a hybrid job, meaning that I'll be in the office 3 or so days a week, and home 2 days. Though the 1st couple of weeks I am going in everyday to get used to things. And they honestly need more developers, so hoping I can get the developers from my previous company to be able to come over and work there. There is oddly a lot of shared domain knowledge between the 2 jobs, though the new one actually has a factory they own vs using ones in other countries as partners. It has been a surreal experience so far in how things overlapped like that.

Monday, May 22, 2023

Mythology and Pantheons: The Elves of Windemere Crossing and the Goddess Ran

As I am reading a book on Norse mythology (I had no idea Odin had several sons!) I think I'll pull some of those gods and goddesses into my own little fantasy world. The pirate Elves that run the Silver Pirate (and there are a number of half-Elves when I re-read that) may often use the curse "Let Ran take them down!".

In Norse mythology:

Ran is a goddess and a personification of the sea in Norse mythology. She is the wife of Aegir, the sea god, and the mother of nine daughters who personify waves. She is frequently associated with a net, which she uses to capture sea-goers and drag them into the depths of the ocean. She is also seen as a protector and a guide for those who travel on the sea, and a symbol of the vastness, mystery, and transformation of the ocean.

For my world, she is a separate pantheon than the one I started 40+ years ago in college. She has 9 daughters who personify the waves. I'll try to explore that later, seeing as there are many waves from the smallest ripple to a tsunami that can take out a city.

But for our Elves of the Silver Pirate, Ran is both a blessing and a curse. They pray to her for safe voyages, as well as blame her for sailors lost at sea. Now at the edge of a desert, the Elves do not pray or offer many observances for the goddess. They are frustrated with the curse that brought them here. The cacklemar (a fat seagull looking bird) is nicknamed Ran's Messenger. Being fat and unable to fly, Nomehi Wiridea, the inn's owner, still offers the bird mackerel she has shipped from the ocean, praying to be allowed back to the sea. The cacklemar is an odd bird found in the Wex's Drift supplement. If my players ever get to an ocean, I'll use that as it seems like a lot of fun. In the meantime, the Silver Pirate NPCs know about the Drift and it may come up in conversation or as rumors. Along with the Amazons - Nomehi has her suspicions about the Burgermiester of Windemere Crossing.


AI generated sea goddess

Now we've nine daughters to deal with if I really want to expand out the pantheon for them, though I may stick with the Norse myths for the Sea Elves gods and goddesses, or at least my interpretation of those myths. Do the Elves deal with Aegir, the god of the sea? Or is he just a sea god of a particular sea?

Which brings to mind: are the gods and goddesses universal in my world, or do they have some sort of geophysical or cultural ties to a more restricted area? If I recall, Tery Pratchett's gods and goddesses depended on their followers' faith for their strength (and actually, that is a is pretty common idea across a lot of history and fiction, I just remember it being specifically mentioned in his books). While I have my central pantheon that I am bit by bit fleshing out, there can be many others out there as well. 

Where this also comes to mind is that my next game (the OSE game I've been slowly prepping for) has a druid, and I've asked the player to come up with that druid's specific religion or god or whatever. Part of my shared world-building process. He is very imaginative so  I am sure he'll have something good that I can hang some game hooks off of.


Friday, May 19, 2023

Traveller World Explorer - Automatic Updates or How to Do Databinding and ObjectNotify

Sorry - a far more technical-sounding title than I usually use. Basically, software is an interesting thing: often we have the data (stored in a database, locally, or just transient data the user is accessing) and have to show that on the screen. Most systems have a way of handling the persistence of data (getting it saved off to wherever it is to be saved off to). For web applications, this is a bit trickier and usually involves more stuff behind the scenes than the consumer of this data knows about. Fortunately, there are several frameworks that can handle all this fairly seamlessly for you. 

And there are some notes at the bottom of this post about the Traveller RPG as a framework. It won't hurt my feelings (and I'd never even know!) if you skip to the end and ignore all the software explanations.

Actual explanation getting started!

Anyway, the same thing applies in my little world explainer: while I am not actually saving off any data (yet!), we do have the concept of the world via the UWP representation. All these fields (starport, size, atmosphere and the rest) need the representation on the layout. Easy enough with a text field (though in MAUI this is really a label - tough for me as there used to be an actual text box...things change). But behind the scenes we need to interact with this data in order to explain our world.

Way, way back when I started with Windows GUI software, you had to extract each piece of data from the associated object it was attached to, something like:

string starport = TextBoxForStarport.Text (or often .Value or something like that)

With the more current ways of doing things, both in the web and local applications, you generally databind a model to the layout. What this means is that each object can be associated with a field, and so we no longer need to grab each thing, we have them all via the model.

In this particular case, I wanted to have the explanation come up more automatically. That is, click the explain button and it should display that data. Originally, I'd do this by creating the text, then assigning it to the label, and somehow update the layout. However, the .NET framework has a lot of things to help automate this so that we don't have to manually update things and the framework handles it for us. I never could get it working before, but after poking around I did find a really nice class that I'm using to get this to work. So now I just update the world's explanation field (which is not persisted to the DB, assuming I get to a DB at some point) and the layout automatically displays the updated value.

In web applications, this requires a lot of javascript usually, and is (for me at least) painful to implement well. Oddly, Filemaker (Apple's version of MS Access) does this out of the box, and I remember how surprised I was about that. For instance, you have a customer record open, and someone else edits that record and saves it. Your layout will be updated automatically. Magic! Okay, not magic to non-developers, but for someone who has been writing code for 40 some years (if you count college and high school) it is really cool.

Anyway, more code to see how the UI looks:

<Label x:Name="ExplainLbl" Text="{Binding Explanation, Mode=OneWay}" />

This bit of XAML code says we have a label, and it has a name in case we want to reference it (though we really don't need to but old habits), and the text for that label is bound to the model's Explanation field. The OneWay mode simply means we get it from the model, and we are not updating the model. Basically, a read-only field (though I think I may have to add that option).

Behind the scenes, we enable this when they click the Explain button:

 private void ExplainClicked(object sender, EventArgs e)

    {

Worlds world = (Worlds)this.BindingContext;

if (world == null)

{

DisplayAlert("Traveller World Explainer Error", "World is not set", "OK");

}

else if (!ValidateWorld(world))

{

DisplayAlert("Traveller World Explainer Error", "World is not valid", "OK");

}

else

ExplainWorld(world);

    }


    private void ExplainWorld(Worlds world)

    {

        int size = int.Parse(world.Size, System.Globalization.NumberStyles.HexNumber);

        int atmo = int.Parse(world.Atmosphere, System.Globalization.NumberStyles.HexNumber);

        string atmosphere = Atmospheres[atmo].ToString();

        world.Explanation = $"Size: {size * 1000} km diameter\nAtmosphere: {atmosphere}";

    }


C# code that handles the button click (and does some verifications) and then performs the explanation if if have a valid world (and I'd like to move that validation to the actual model somehow, and only enable the explain button if we get a valid world). It is that last line that sets the world model bound to the layout. This class uses a base class that, when setting a field, triggers the something has changed event which then tells the UI to update that info. While I've tried in the past to figure this out, I finally broke down and, after some web crawling, found a really nice and easy class to handle it. Though I probably should rename this class to match my stuff, but as this is a personal project, I like to remember where things came from.

Part of that .NET framework is converting hex strings to numeric values. So that A = 10, B = 11, and so forth. We use the int.tryparse to convert from the hex value to a numerical value so that I can simply reference the array of descriptions. This will break down as Traveller uses a pseudo-hex code: they don't use I for instance. However, as the UWP does not include that, we're good. In theory the ValidateWorld(world) method would check all that (or preferably, do that in the UX layer. I know there is a way!) so it won't break. I do need to add more safety checks, and really need to see about testing (another area I am really bad at). And to make this safer, I'd probably instantiate my own Traveller hex to int function (really simple - just list the values like "0123456789AB..." and find the position of the character. Easy-peasy).

I've also started using ChatGPT to help with some of my software: it has actually been useful in a few cases. While I don't see developers being out of a job anytime soon, it does change a number of things.

The Traveller Framework

Finally - what the heck does this have to do with gaming? Well, two things: first, this blog was started when I got laid off the first time more than 20 years ago, and decided to chronicle my stuff about writing software for Traveller. It has expanded way past that as it is more a generalized gaming blog. But also, speaking of frameworks, the original intention of Traveller was itself a framework (as technically all RPGs are, but to me Traveller excelled at this). And the 2nd part is just that: Traveller is itself a framework.

For me, Traveller is the ultimate toolbox for gaming (and I think I've noted that in my COTI signature). The original 3 LBBs let you do anything you wanted to. The Traveller framework, just like a software framework, gives you tools to make things faster and more consistent. An RPG is a group effort for the most part: there is a back and forth between players and referees. What makes that work is the framework of the rules. Later on, as GDW expanded on the Imperium and codified it more, that setting itself becomes another framework to work with. Just as many software projects will have multiple frameworks in it. RPGs can also have multiple frameworks to handle specific aspects. 

Now, being an opinionated developer (as most developers tend to be), I am not always in favor a framework: while it is easier up front, sometimes you need to do things that the framework does not handle well or is even actively preventing you from doing. And then you are fighting against that. In Traveller, the Megatraveller framework of the Rebellion was not something I liked (and I was not playing actively much then either) so my framework is the original version: while I often use the 3rd Imperium background, it has been fairly loosely adhered to. 

Same for the T5 rules: there are a LOT of rules in that 800+ pages. I do NOT like the trading rules and stick mostly to the classic Traveller ones (the Merchant Prince rules, which are the basis I believe for T5's trade rules) are just so dry. There is no flavor. I also use the GURPS trade rules a bit sometimes, but my current players are not really interested in the trading game, so I've not explored those much lately. But other aspects are really great - QUERBS really allows you to customize anything. I may use those rules even in fantasy games, though in pure mechanics it just ends up something like a +1 or something, but we could add chances of weapons breaking and all that with that framework.

Anyways - frameworks are everywhere. Sometimes useful, sometimes they just get in the way.

And finally - I start my new job Monday. It looks to be a somewhat challenging job, plus there is a bit of a commute. Though it will become a hybrid job and I am hoping for just 2 days a week in the office, we'll see what happens. Of course I am nervous: I am not good with change despite working in a field that is all about change (and frameworks!). 


Ads

Hmm, I had not realized they would have been so intrusive...if you want me to remove the ads, please let me know. I panicked when getting laid off, and wondered if I could make any $$ via ads. But they are really intrusive so for the 3 cents I may get a year, probably not worth it!

Edit again: I think I turned off the ads in the middle of the text, so we just have top/bottom and sides. But if it is annoying, let me know. I really do this blog mostly for myself, and for anyone interested in my ramblings.

Friday, May 12, 2023

Organic Towns - A Spreadsheet And More Thoughts On The Overlap Of Gaming and Software

In thinking through the complexities of using the Organic Towns book, I've decided to start with a spreadsheet (which in developer-speak means an application waiting to happen. Though for single use, a spreadsheet is both simple and effective and maybe all I really need)

By starting with a spreadsheet, I can sort of see and play with what kind of data I'll need. I even formatted it a bit...


Fortunately, I know enough about spreadsheets to help automate a few things. As each building has a column for various modifiers, and can summarize those for the various DMs for trade, defense and all that. I've even automated the SP (Settlement Points) based on the population and the various adjustments based on the housing.

=ROUND(SUM(0.1*RC[-4]+SUM(R[10]C[-5]:R[49]C[-5])), 0)

Gives me 10% of the population + all the SP modifiers, the rounds to the nearest whole number. This process informs me how I'd probably set up the database, if I were to do this as an application (and I just may. It is not like I keep starting and stopping personal projects...oh, wait, I do!)

As I see things in schema way too much, I see the big picture as a town is a name and the pertinent parts, then several associated records: history (notes for the various rolls), a join table to associate buildings with the town and what level they are at, and the base table for the buildings themselves and what they do at level I, II & III. If this were to be expanded further, I'd even pull out the benefits and costs to yet another table, allowing us to easily go to 11, err, I mean IV. 

Anyways, a rough back of the envelope schema for buildings, assuming we keep the levels built-in, would look like this:

  1. id - primary key. used when we create a list of buildings for a town
  2. name - House, Brewery, etc
  3. pre-requisites - pretty vague and not really needed for functioning unless we turn this into an actual application or web site. which, hmm, maybe I should get in touch w/Headless Hydra and see if this is something they would like to see...I could do something on the side perhaps.
And in writing that out, realize I'd probably extract out the various costs into its own table as well, something like:
  1. id - primary key
  2. buildingID - foreign key to the building this belongs to
  3. level - I, II, III (though probably 1, 2, 3)
  4. SP adjustment
  5. Crime adjustment
  6. Defense addjustment
  7. population adjustment
  8. Moral adjustment
Anyway, as I think way too much about software and schema sometimes, that is one way of looking at this in case I decide to make an application of some sort for this.

And to bring this back to gaming terms, this is a fair amount of work for something the players don't really see too much of. And it is definitely overkill in many people's eyes. Traveller 5 has the MOARN principle (Map Only As Really Needed), software has YAGNI (You Ain't Going to Need It) as guiding principles: essentially saying do not over-engineer as you are wasting time and energy. As all of you know, I really like world building just for the sake of world-building: it is fun for me, so on the gaming side, it is not a waste of time or energy as it is an enjoyable process. In software, things get trickier. For personal projects, this is not an issue. But at work (and I will be starting to work again very soon as I've had 1 2! job offers so far and have to make a decision soon) this becomes someone else's time and money. And while I do get paid to think, I also get paid to produce a viable product that is actually used. Or at least help lead the team to do that.

Over the years, I've gained a fair amount of confidence about where I think things should be headed to. Both in running games and in designing software. However, games and real life are closely intertwined: just like no game plan survives contact with the players, software does not survive contact with real users. So, over-engineering in either case can lead to dead ends, bits and pieces that are not needed.

Which brings me to wonder: should I apply agile principles to my gaming? While several pieces I do agree with (the primary one of customer (aka player) satisfaction is of utmost importance). But, being an opinionated person, I don't agree 100% with all the principles. The agile method is designed to get things done fast with the least amount of overhead. But for longer-term projects and games, you do need some of that overhead, and the vision for the long-term game. 

As a probably final note, almost thinking about perhaps figuring a way to get some of these meandering posts to be more organized and brought to other internet publications. I may want to start another blog on the crossover of gaming and software development so that I don't bore my gaming readers with all of this. Just a thought that I may let swirl around in my head. I've a feeling that a lot of software developers also game, though most probably game via a console or computer game versus actually rolling the dice, so perhaps the overlap is not as much as I think. And as I read a fair number of posts from software "experts" wondering if I could do the same thing (and I know that more and more of those posts are actually AI generated now, so people are getting really lazy!), but seen through a slightly different lens. As per my meandering career, my educational path has also meandered a bit as I have both an ancient (1986) computer science degree as well as a slightly more recent masters in philosophy (1997). Admittedly most people an equally or even more varied life and career, but I do like to think I am somewhat unique, then realize that everyone is unique. And thank goodness for that!

And a Venn diagram of my world building. I think the overlap is even smaller...


Wednesday, May 10, 2023

Traveller World Explainer - Trade Codes

Trade codes are based on the physical stats out of the UWP. You can pretty much use the chart as-is from Traveller, and a simple text file can give you the resulting trade codes. There are a LOT of ways you can handle this, but as the list is small, and in theory if this text file were available to the end-user (or editable in the software) users could customize their trade code results.

# CT trade classifications

# 2 character code<space>description,size,Atm,Hyd,Pop,Gov,Law,TL,cost effect (purchase)

# to figure it out, just read through the list and that match ('-' means not applicable), the criteria are valid as long as all the criteria matches


# if an additional field is given, it is tech

Ag agricultural,-,456789,45678,567,-,-,-,0

As Asteroid,0,-,-,-,-,-,-,0

De Desert,-,123456789A,0,-,-,-,-,0

Ic Ice capped,-,01,123456789A,-,-,-,-,0

In Industrial,-,012479,-,9ABC,-,-,-,0

Na non-agricultural,-,0123,0123,6789ABC,-,-,-,0

Ni non-industrial,-,-,-,123456,-,-,-,0

Po poor,-,2345,0123,-,-,-,-,0

Ri rich,-,68,-,678,456789,-,-,0

Va vacuum,-,0,-,-,-,-,-,0

Wa Water world,-,-,A,-,-,-,-,0

I generally prefer simple to begin with. And I think this is sort of a variation on how HL7 records work (an old data schema for transferring clinical and administrative data between healthcare providers. I had to convert that to import those records into a system I was a part of years ago. Funny how things stick with you!)

This table is from an older version of the Traveller Tracker, and does look like it may be missing the cost DM. As I am not working on trade (yet!) I can punt that part down the road.

The nice thing is that I could include the tables for various versions of Traveller, so that you can choose which rule set you are using. Again - a future idea assuming that this one moves along and gets to something like a completed or at least ready to share state. And I will note again that this is all in my public Github account here. So you can follow along with my often-bumbling approach. It turns out that MAUI programs have a RAW directory in the resources directory, and stuff placed here gets bundled with the application and can be read. Now, longer term, I'd probably move this sort of thing into the database (SQLite for this application). This would allow us to update the table, and hopefully, not overwrite any user-defined things with future releases. While not a consideration for this project, these are the things I think about. Guess I have been writing software a long time!

An even simpler table is the government table: as the CT ranges from 0..15, I just have a list of governments, and you just grab the one based on the value. Like a lot of languages, the array (or list in this case) starts at 0. I basically snagged all those tables and will use them for some initial lookups. 

And there are text boxes in MAUI, but I can use a label for a display-only set of results. I've added the button action, and while I do have some checks in place to validate a valid world (to some definition of valid) I am currently bypassing those to see how the label looks. And you can see that the port as G is invalid and red. Sadly this is only in the display part of the software: I think I may have to convert to MVVM to have this in the model so that the display gets the model validations. At least I think that is what I have to do.

There are some really nice text tools built-in for editing text. A future phase of this may be to save off your worlds and have your own text for them.

I was trying to get model-level data verification in place, but I think that would be more an MVVM architecture, which currently this project is not. Application architectures are interesting, and like frameworks, can be both very useful and very constraining. But that is a discussion for another post! I did add page-level validation (where a page is like a view for those who are more web-oriented - basically where we are showing something). I'll have to see if I can work that into the actual explanation button action. 

And I need to see about adding unit tests - that was the reason for adding validation so that I can automate all this stuff better. I'm just having a bit of a hard time getting it in place still. 

Some slow and erratic progress. I started this back today as I've had a few screening interviews, and one that I thought I totally messed up I have a call-back for a 2nd interview. And I had an actual face-to-face interview with an interesting and local company. Oddly, they use 3 things (.Net, Filemaker & Rails) that I have that is also not a common shared set of skills. I have had a somewhat circuitous career path it seems! And some of those interviews seem to have gone well, so I may actually have choices to make. Previously I've just grabbed the 1st job that came along: I fear I am often far too much defined by my job. Well, that and I like insurance....