Friday, July 23, 2021

Game 281: Galactic Trader

Today I'm doing an unplanned post at the recommendation/challenge of fellow blogger The Wargaming Scribe, who often comments here as Narwhal.

Back when I played through Doug Carlston's Galactic Empire on the TRS-80 as a prelude to the early games of Broderbund, I hadn't intended to continue the saga. The initial game was interesting, ambitious given the limitations of 16KB BASIC, and weirdly atmospheric, but Carlston would go on to bigger and better things, and Galactic Trader isn't especially well-regarded. However, after WGS covered it, and recommended I check out the third game, I decided to cover both.

 

I played this one very briefly after covering Galactic Empire and quickly decided it wasn't worth covering, but the chance to compare performances might make this more interesting, and the data-gathering aspect and trade route optimization does speak to me.

Ousted from your role as a military commander in Galactic Empire and marked by imperial assassins, you now roam the galaxy as a freelance trader in pursuit of money, which during times of peace means power - power that you'll want when the revolution happens. You make money buying goods low and selling them high, but you'll need to visit planets to learn what the rates on the goods are before you can do this effectively. It's much like DrugWars, which was, according to Wikipedia, inspired by a 1974 BASIC game called Star Trader, which also influenced Elite.

I don't fancy these odds.

Some of dangers you'll face are:

  • On Galactica, the only world that deals in cash, you risk assassination with each visit.
  • Cargo weighs down your ship and increases fuel expenditure, leaving you stranded in space if you run out.
  • Traders may kill you if you offer them goods that you don't have.
 
I imposed these rules on myself:
  • Difficulty was maximized at level ten.
  • I created the save state as soon as I decided to play in earnest.
  • I get one chance to finish the game. No restarting allowed.
  • My only acceptable uses of save states are so that I can take breaks and resume later, and to undo  serious input errors and accidental breaks.
  • I will log my trips and trades so that I can re-trace my steps should I need to load a save state.
  • The game must be left running and unpaused when entering data or performing related number crunching.
  • I may pause to take blogging-related notes.
 

Because Galactica is the only planet that deals in cash, and since going there can kill you, it makes more sense to me to think of fuel as the galaxy's de facto currency. This viewpoint is further supported by the fact that commodity traders outside of Galactica are slightly cagey about their own exchange rates, but the fuel cartels are up front about their goods-for-fuel rates, and as it turns out, are perfectly accurate predictors for what goods are worth on any given world.

The only time a commodity trader will ever tell you what the goods are worth.
 

I won't comment too much on the interface. It isn't great, and WGS said enough on the subject already, but I still find it an improvement over Galactic Empire. The biggest issue, one carried over from the previous game, is that if you start typing a number (e.g. an offer on goods), the game will automatically submit your input when you stop typing it. This could cause you to really screw yourself by submitting an offer to trade your entire stock of Rhiolans for 173 Hempites when they were actually worth 1,731 of them, and the last "1" didn't register. Less catastrophically but no less annoyingly, It could also mean that when you press Enter to manually commit an input, the game may automatically commit first, and then buffer your Enter keypress and process it on the next query.

Surveying the planet locations
 
My galactic chart:

X Y Z Distance Gravity Fuel/kg
Current 40 48 8 0 3
Galactica 40 48 8 0 5 3
Bok 29 50 8 11.18033989 3 8.590169944
Novena 27 49 8 13.03840481 3 9.519202405
Harkon 26 44 7 14.59451952 3 10.29725976
Zoe 30 35 9 16.43167673 3 11.21583836
Utopia 23 50 6 17.23368794 3 11.61684397
Farside 23 50 14 18.13835715 3 12.06917857
Proyc 34 30 6 19.07878403 3 12.53939201
Twryx 43 29 10 19.33907961 3 12.6695398
Javiny 34 30 15 20.22374842 3 13.11187421
Drassa 2 24 36 5 20.22374842 3 13.11187421
Sparta 52 27 7 24.20743687 3 15.10371844
Moonsweep 20 33 1 25.96150997 3 15.98075499
Alhambra 56 26 4 27.49545417 3 16.74772708
Kgotla 35 19 2 30.03331484 3 18.01665742
Viejo 57 18 7 34.49637662 3 20.24818831
Eventide 6 34 1 37.42993454 3 21.71496727
Ootsi 4 23 6 43.87482194 3 24.93741097
Yang-Tzu 52 5 6 44.68780594 3 25.34390297
Llythll 2 4 10 58.17215829 3 32.08607914
 

WGS noted that the farther away two planets are, the bigger the difference in price will be, and Llythll was the most distant from Galactica. In fact, nothing is particularly close to it. The farthest planet from Llythll is Alhambra.

I visited the local fuel cartel to check the exchange rates here. The interface, as noted already, is unintuitive and inefficient for a methodical playstyle, but I learned that, contrary to WGS's experience on the Apple II version, here you do not need to possess any cargo to merely offer it in trade, which will save me plenty of fuel during my intel-gathering phase. Just offer the goods, take note of how much fuel is offered to you, and be sure to reject the offer, or you'll face the cartel's wrath.

I discovered that the traders will give you fuel at 0.25 units per dollar of whatever the value of the goods you offer are worth, rounded down. Therefore, I'd always offer 4 goods to discern the true fuel value. Traders will sell you fuel at $2 per unit, so it's a better deal to sell your goods at Galactica and buy fuel with cash, but as noted, this isn't really a sustainable gameplay option.

Although I had the Galactican prices, this wasn't enough to tell me which items were expensive and which were cheap. Tenibles were the cheapest item at $13/each, and Feelies the most expensive at $382/each, but I'd really need to visit another world to compare prices.

I bought 309 units of fuel, leaving me with $382, just enough to buy a single Feelie later. It would be embarrassing if I spent all my money on fuel now, leaving me unable to start trading later! A trip to Llythll and back would cost just over half of my fuel, certainly leaving me with enough to make a return trip with some cargo.

I went to Llythll, carrying no cargo, and queried the fuel exchange rates of the goods available. Everything was more expensive here. Especially the rhiolans, which had gone up from $277 to $2582! If Galactican prices were typical of that corner of the galaxy, then the optimal strategy seemed to be to buy rhiolans there, trade them at Llythll for something that might bring a profit at home, trade several of them back for fuel (more on this later), and return home to trade for rhiolans.

Before returning to Galactica, I took a detour to Alhambra to check their prices. Rhiolans were even cheaper here.

My price chart:

Galactica Alhambra Llythll
Tenibles 13 42 38
Silicates 69 4 645
Hempires 16 51 211
Feelies 382 37 702
Microbes 37 22 717
Dopae 24 282 1166
Pylates 53 72 494
Rhiolans 277 19 2582

Lacking any goods to trade here, and unable to spend cash, I returned to Galactica to buy a single rhiolan. Here, the computer informed me that on my next visit, I'd face a 66% chance of assassination. I'd have to make this trip to Galactica my last. From here on, I'd have to barter, so I spent my remaining cash on fuel.


The trip to Llythll left me with only 157 fuel, but a trader here, a Mr. Kanabe, offered me 67 tenibles for my rhiolan. The formula for what deals they'll accept is very simple; divide the total value of what you're offering by the value of a unit of what you want to get and round down to get the highest quantity you can ask for. The deal that they propose to you are always the fairest ones you'd get anyway.

A single tenible could be traded for two rhiolans back on Alhambra, so I traded all of my tenibles but one for fuel. Optimization could come later - for now I needed some reserves to ensure I could make a return trip.

The return with 2 rhiolans left me with only 50 fuel, and a big problem - the "intermediary consortium" declared exclusive trading rights on the Alhambra-Llythll route, and I could not trade them for tenibles as planned. Thankfully, I could still trade with the fuel cartel - I'd be very screwed otherwise - so I traded 1 rhiolan for 645 fuel, and embarked to Ootsi, the closest planet.

Here, my remaining rhiolan became 272 tenibles, and once again I traded all but one back for fuel. I took it to Viejo, the next-farthest planet from Llythll, where I was able to get 7 rhiolans! Bringing those back to Llythll, they fetched 475 tenibles.

Now, I had a problem that required math. Taking 475 tenibles back to Viejo would need 15,035 units of fuel, and I only had 158, which wasn't even enough to return without the cargo. I'd have to trade some of this for fuel, but how much? The more you sell, the less fuel you need.

Fuel consumption for a trip is determined by this formula:
(GravityFactor + Distance/2)*(CargoMass + ShipMass)

GravityFactor is "3" on every planet I had visited except for Galactica, which I would never visit again, and ShipMass is 10.
 
Substituting these values, and adding a variable "CargoSold," the formula becomes:
(3+ Distance/2) * (CargoMass - CargoSold + 10)
 
The amount of fuel available could be determined by this formula:
Fuel + CargoSold*CargoValue

As this amount must be greater than the fuel consumed, we get the inequality:
Fuel + CargoSold*CargoValue > (3 + Distance/2) * (CargoMass - CargoSold + 10)
 
Expressed in terms of CargoSold:
CargoSold > (3*CargoMass + 30 + (Distance*CargoMass/2) + 5*Distance - Fuel)/(CargoValue + 3 + (Distance/2))
 

After plugging in the values, and checking very carefully to ensure my math was right and rounding up distance values to err on the side of caution, I found I'd have to trade 369 of my tenibles for 3,505 fuel, for a total of 3,663. The trip to Viejo with the remaining 106 units would take 3,596. I sold 372, rounding up to a multiple of 4, to get the most fuel per tenible possible, and embarked to Viejo.

Using this formula again at Viejo, I converted 103 tenibles to 43 rhiolans plus the needed 1,536 fuel, and brought those back to Llythll, where I was once again truck-blocked by the consortium. So I traded 4 for enough fuel to get me to Ootsi, where the 39 rhiolans got me 693 tenibles plus  over 17,000 fuel. From there I went to Sparta, the next-furthest planet from Llythll, where I traded for 148 rhiolans plus 4,488 fuel back to Llythll.

One more round trip to Sparta and back, and I was hauling 515 rhiolans and 15,144 fuel to Llythll. And the consortium decided that was enough and blocked me once again, forcing another detour. Trading 12 for fuel, I went back to Ootsi, where the consortium had yet another exclusivity deal, and I had to trade another 8 to make it to Eventide. There I converted what I had left to 7624 tenibles plus over 228,000 fuel, took those to Viejo where I got 3,863 rhiolans, plus over 112,000 fuel to carry them all. Just how is my ship, which weighs the same as ten cargo units, supposed to be holding all this?

I wanted to take these back to Llythll, but stopped at Eventide on the way to avoid trespassing on the consortium's Viejo-Llylthll route. There, I reached my time limit, and the game suddenly ended.


The asset value here is exactly equal to 8 credits per rhiolan, which is what they were worth on Viejo where I got them. At Galactica rates, they'd be worth a million.

 

I replayed my original save game, using save states liberally this time. I got all of the prices ahead of time, planned my routes, and quickloaded to avoid time-wasting embargoes. I eventually found that this version of the game is unwinnable.

Say yes and the game crashes, unable to inventory 3 million silicates. Say no and it freezes, unable to calculate how many tenibles your cargo is worth.
 

Whenever you own more than a million of any commodity, it crashes, and even if you avoid this, the game starts behaving very strangely when attempting to sell quantities close to the limit, sometimes freezing, sometimes refusing to process input, and very frequently displaying numbers in E notation. Even if you could somehow acquire 999,999 of every asset, it would be worth only about 6.5 billion on this galaxy's Llythll, and you can only get cash on Galactica so many times (and we're talking hundreds of millions per trip at most).

GAB rating: Bad. Galactic Trader is a lot simpler than Galactic Empire, less interesting for it, and overall feels slapped together. The interface is a confusing mess, the mechanics unintuitive, and playing the way it seems to encourage will get you nowhere. If you don't like poring over spreadsheets like an accountant working overtime then there's no joy to be had here at all, and even I didn't have that much fun with it. The game-ruining bugs were the final nails in the coffin.

 

Here's my activity log from the "real" game, played without aforehand knowledge of prices or embargoes. Pink rows represent exploration, green rows commodity trade, and yellow rows are detours forced by the consortium.

Arrival year Planet Fuel Sold Bought Fuel Cargo Galactican worth Departure year Fuel spent
1 Galactica 1,000 $618 309 fuel 1,309 $382 $382 15 335
73 Llythll 974

974 $382 $382 76 312
134 Alhambra 662

662 $382 $382 137 166
164 Galactica 496 $382 49 fuel
1 rhiolan
545 1 rhiolan $277 168 388
227 Llythll 157 1 rhiolan 627 fuel
1 tenible
784 1 tenible $13 228 357
287 Alhambra 427 1 tenible 2 rhiolans 427 2 rhiolans $554 287 377
345 Llythll 50 1 rhiolan 645 fuel 695 1 rhiolan $277 347 149
366 Ootsi 546 1 rhiolan 474 fuel
1 tenible
1,020 1 tenible $13 386 333
421 Viejo 687 1 tenible 7 rhiolans 687 7 rhiolans $1,939 424 529
480 Llythll 158 7 rhiolans 3.5k fuel
103 tenibles
3,692 103 tenibles $1,339 490 3,506
546 Viejo 186 103 tenibles 1.5k fuel
43 rhiolans
1,722 43 rhiolans $11,911 548 1,637
604 Llythll 85 4 rhiolans 2.5k fuel 2,667 39 rhiolans $10,804 605 625
624 Ootsi 2,042 39 rhiolans 17k fuel
693 tenibles
19,402 693 tenibles $9,009 628 18,979
676 Sparta 423 693 tenibles 4.4k fuel
148 rhiolans
4,911 148 rhiolans $40,996 680 4,805
735 Llythll 106 148 rhiolans 73k fuel
2.3k tenibles
73,294 2,352 tenibles $30,576 736 72,026
792 Sparta 1,268 2.3k tenibles 15k fuel
515 rhiolans
16,412 515 rhiolans $142,655 793 16,023
848 Llythll 389 12 rhiolans 7.7k fuel 8,135 503 rhiolans $139,331 850 6,418
869 Ootsi 1,717 8 rhiolans 3.8k fuel 5,527 495 rhiolans $137,115 871 4,552
883 Eventide 975 495 rhiolans 228k fuel
7.6k tenibles
229,095 7,624 tenibles $99,112 888 225,206
941 Viejo 3,889 7.6k tenibles 112k fuel
3.8k rhiolans
116,241 3,863 rhiolans $1,070,051 945 114,257
998 Eventide 1,984


3,863 rhiolans $1,070,051

Friday, July 16, 2021

Game 280: One on One - Dr. J vs. Larry Bird

The first sports game I ever covered was Atari's Basketball from 1978. A simplistic one-on-one basketball game, it nevertheless anticipates Electronic Art's One-On-One, which debuted on the Apple II in 1983 before being ported to Atari, Commodore, and IBM computers.

Though still simple by today's standards, One-on-One offers a lot of refinement and bells and whistles, and at least symbolically marks the beginning of the EA Sports dynasty.


Progress?
 

The manual has EA's typically high production values of the day, featuring photos, biographies, and interviews with Julius Erving and Larry Bird, who were consulted during the game's design sessions. 

Notably for the time, the players are not identical. Dr. J has better speed and dexterity up close, and superior hang time and dunking ability, while Bird brings stronger defense, better rebound game, and more accurate outside shooting. On the face of it, the advantage seems lopsided in Bird's favor. Standard play rules give the ball over to whoever loses the point, and offense scores more often than not, so victory seems to go to whoever can successfully defend more often than the other guy.

There are a few gameplay options:

  • Game type - Four options from easiest to hardest: Park and rec, varsity, college, and pro. The more hardcore the game type, the more strictly the rules are enforced by the referee, and in singleplayer games, the better the AI plays. Default is pro.
  • Play mode - Two player, singleplayer vs. Dr. J, singleplayer vs. Larry Bird
  • End of game - Timed or to a set score (1 to 99, default 21). Default is timed, with four-minute quarters.
  • Possession -  Point winner gets offense, or point loser gets offense. Defaults to point loser.
 

The Apple II version also supports Mockingboard music, making it the first such game I've ever seen apart from the Ultima series, playing Maple Leaf Rag during the title screen and options menu, but this is the only time it plays any music at all.

I played a round with "B" following standard rules. He played Bird, I played Dr. J.

 

We both had some trouble at first figuring out how to pull off an effective defense, but "B" pulled way ahead during the fourth quarter once he did, and neither of us felt like a replay.

Controls, just like in Atari's basketball, are based around a single button joystick, but you can do more things thanks to context sensitivity. On offense, a quick tap spins you 180 degrees, and you can execute shots or dunks by holding and releasing with the right timing. On defense, the button steals or jump-blocks, depending on where the ball is, though the graphics make it hard to tell if a steal was successful or not.

Some other features here are:

  • Fouls
  • Free shots
  • Three point shots
  • Fatigue bars
  • Hot streaks (alluded to in the manual as an invisible game mechanic - were there "hot streak bars" in previous games?)
  • Instant replays
  • Breaking the backboard, complete with an irate janitor's glower as he sweeps up the shards
  • A horrible sounding crowd cheer effect every time anyone scores a basket
 

After playing a round with "B," I found an almost surefire way to beat the computer in pro mode. Play as Bird, and always take your shots from the three-point line. When you're on offense, they'll usually go right over Erving's head and sink, as long as you move directly down and not at an angle. On defense, go for the rebound when you can, but don't fatigue yourself with too much exertion in pursuit of the ball. The AI as Erving only ever goes for two-point shots, so it's not that difficult to gain a big lead over him through reliable 3-pointers, even if you don't block his own offense most of the time, and even if you miss on occasion. On my first try, I beat the AI on pro mode, scoring over 100 points and flipping the counter.

Stupid game didn't even acknowledge my victory.

GAB rating: Average. I'm not really the target audience for this game. I recognize the strides made toward realism compared to contemporaries, but neither "B" nor I had that much fun playing it.

 

Data Driven Gamer will return in August to wrap up 1983 with Wizardry III!

Most popular posts