Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411526 Posts in 69381 Topics- by 58436 Members - Latest Member: GlitchyPSI

May 02, 2024, 05:53:58 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsTen Minute Tycoon - Microstrategy game about building a rail network
Pages: [1]
Print
Author Topic: Ten Minute Tycoon - Microstrategy game about building a rail network  (Read 377 times)
jsnell
Level 0
*


View Profile
« on: January 08, 2024, 12:36:42 PM »

Ten Minute Tycoon is a browser game I prototyped a few years ago, and intend to actually finish in 2024. The goal is to do concrete work on it every week until it's released. Here's what the game looks like right now:



The concept is building a train network between cities that are producing and consuming different resources, and creating persistent shipping routes between them, to maximize your per-minute profit by the end of the game. The more cities a route passes through, the higher the income from the route will be.

All track building must be paid for with either debt or previous profit; the debt has high interest and can never be paid back, so the core tension is between maximizing  early short-term profit (to finance the rest of the network without debt) with the long-term (building a complex network where the shipments can be taken on long and oh-so-profitable tours through a bunch of cities).


The game is currently in a state where the fun is usually there for an individual match (for the people who find this kind of optimization puzzle), but some scenarios are kind of one-dimensional and obvious. There's also little reason to keep playing since you never know whether the result was good or bad.

My current to-do list for completion is:

  • Add the main missing game mechanic from the original vision: special powers, chosen for each sceanario from a random pool, one of which can be triggered every 2 minutes
  • Make sure the map generator doesn't create broken levels (e.g. unreachable cities), and more importantly that the maps are consistently (>95% of the time) interesting and don't just have one obvious best solution.
  • Add a set of pre-generated campaign levels with score thresholds that gives players an idea of how well they're actually doing.
  • Add daily/weekly/monthly challenge levels with online leaderboards
  • Add a bunch of quality of life improvemenst to the UI (tooltips for everything, redo to match the undo, notifications for when things happen / fail)
  • Add animations in places where I think it'll make the game rules more obvious to the players (e.g. an animation to highlight the interest payments happening every 10 seconds)
  • Make the layout + map orientation dynamic to use the space efficiently for both portrait and landscape screens/browser windows
  • Add proper terrain graphics, icons for the different resource types
  • Add sound effects
« Last Edit: January 15, 2024, 01:34:06 AM by jsnell » Logged
jsnell
Level 0
*


View Profile
« Reply #1 on: January 08, 2024, 12:52:27 PM »

Week 1:

I last worked on this game in 2022, but that ground down to a halt when I decided to rewoirk the internals of the UI. The way it works is horrible, but the half-finished refactor with a bunch of missing functionality had not only made me not want to work on the game, but not even play or demo it. So I started by reverting all that work; the UI code is back to sucking, but I'll just live with it and do a more incremental refactor the next time around.

To start things off simple with a codebase I'd forgotten about, my first target was a minor QoL feature for marking specific resources to be automatically shipped as soon as the track needed for shipping them *somewhere* exists. It works, and immediately makes the gameplay smoother, but also subtly breaks the undo functionality. I'd forgotten that the way the undo works is by rewinding the game back to the start, and then replaying the entire game until the point that the player asked the undo to. So I need to make sure that marking a resource (and unmarking it!) shows up in the game's event log and can be replayed back (and will need to do the same if I ever add a "automatically build this track later" feature).


I also experimented with adding icons for the resources (and sorted out drawing SVGs onto a HTML canvas), but the resources are a bit too small for any of the icons I tested to look good. This showed that some icons would definitely be good, but I need to find or make some icons with fewer details.

Logged
jsnell
Level 0
*


View Profile
« Reply #2 on: January 15, 2024, 01:55:04 AM »

Week 2:

I rewrote the way the track layouts work entirely. The main goal was visual to make curves, well, curves rather than sharp angles at the middle of a hex. But as a side effect, it was now viable to allow tracks to cross. I originally thought that the constraint of not allowing such crossings would lead to interesting decisions, but after some test games I think the extra freedom is probably actually a plus. So it's staying in, even though that'll mean some extra work.

I tried a couple of different approaches to generating terrain textures (dynamically in my own code, externally with various node-based texture editors), and didn't love either approach. The results obviously aren't great, but they were enough for me to realize that the textures need to be really subtle to not harm readability of the game state. The forest and the swamp were the only remotely usable ones, and neither is going to stay. I'll probably need to look at old (board) wargames for inspiration on non-intrusive terrain textures, and figure out how to replicate them.

I'd be really interested in any recommendations on good of tips and tricks docs or videos on using procedural texture generators.


On the gameplay side, I made some rule tweaks to make decisions around when to build track less random (and to make scheduling future track builds easier). Basically in the game, a 7% interest on your debt is due every 10 seconds. If you run out of money, you automatically take more debt. What would happen is that you want to build track that's going to cost $50, and wait for your cash balance to tick to say $53 so that you're covered for not only the cost of the track but the next interest payment. Except you had to kind of guess at how much over $50 you needed to be, and guessing wrong would just mean a tedious undo and trying a different timing. So I changed the rules such that if you go to a (small) negative cash balance due to an interest payment, it doesn't trigger an immediate loan.



Logged
jsnell
Level 0
*


View Profile
« Reply #3 on: January 22, 2024, 01:22:16 AM »

Week 3:

I made a selection pane for the special powers. The intent is to eventually have about 10, chosen from a random set of about 30; I don't have them all designed yet, but I'm hoping that once this initial set is implemnted, I'll naturally have all the necessary hooks in place to make implementing other ideas much easier.

I'd hoped to fit an image onto the cards as well, so that I could use them to show which powers are currently active in the bottom bar, but it looks like I'll need to either make the cards significantly larger for that or make the text shorter.

The map generator is more sophisticated now, and can guarantee there's not too much or too little of any given terrain on the map, e.g. there's always going to be 60-80 hexes of water. Enough to always add some interesting constraints, but never so much that there's only one route you can actually build. It'll still need similar safeguards against pathological city distributions.

Also some more iteration on terrain textures. What I think I'll do for all the terrains is procgen terrain features (e.g. the little bushes and ponds for the swamp) distributed over wrap-around 150x150 texture using blue noise, on top of a monochrome main terrain color.



Finally, the game now displays notifications for a few seconds for events like new train routes being created:



I also had a good discussion with a friend about what the MVP for this game really looks like. The game is fundamentally a score run: there's no explicit win or loss condition, the goal is just to get as high a score as possible. And that's why both the daily challenges with an online leaderboard + campaign levels were on my initial roadmap. But for initial "do people other than me" testing, it's probably fine to just have a couple of levels for which I can manually set the success thresholds. That saves writing the server-side components for an online leaderboard or the manual effort of curating a full campaign. It'll also mean I don't need to get the full set of special powers implemented.

Assuming I keep everything else from the initial roadmap, getting the MVP done by end of March looks quite doable given my current time allocation for this project.
Logged
Pages: [1]
Print
Jump to:  

Theme orange-lt created by panic