AlexK's Dev Blog

I’ve been having a ton of fun creating the artwork and getting the basic animations to work. Thought I’d share!

Board game sneak peek

I don’t have any of the game logic done, but I’ve written this game before in other languages, so I’m hoping my recall is strong. :slight_smile: Next steps for me will be setting up the player selection screens, including multiplayer. By the way, how cool is the new multiplayer capability in MakeCode Arcade! [1]

I’m thinking this one is going in the JavaScript book. Lots of complexity and really fun problem solving. After I have it finished in JavaScript, I’ll have to see whether it can be simplified enough to build in Blocks.

More to come!


[1] https://arcade.makecode.com/multiplayer

See all of my MakeCode Arcade games and extensions here!

16 Likes

looks cool

2 Likes

Had a lot of fun with this one over the weekend. I have the prototype built out to a point where I’m happy with it. I think next weekend, I’m going to optimize one of my plugins to take advantage of some new MakeCode Arcade stuff that didn’t exist when I built it, and then I’ll start building the “final” game.

Stay tuned!

Monopoly-20230320

7 Likes

Very cool!

2 Likes

@AlexK, how much longer 'till this game is finished? I can’t wait to play it! :smiley:

3 Likes

Thanks for all of your interest!

I did some work this past weekend. A couple of weeks ago, I did get into an old plugin to optimize it a bit. This weekend, I started the game proper. I have the settings screens, avatar selection, and first player functions working, along with multiplayer!

Monopoly-20230417

I have a bunch of work to do this weekend, but I’m still hoping to spend some time on this, too. I’ll be thinking about it over the week, as I have a few thoughts on what to attack next. Stay tuned!

7 Likes

Dang! This Is INSANE!

4 Likes

If any of you are interested in playing with the game and code in real time, then please feel free to play along!

You can open a copy of the code in your own editor by selecting the Edit link below the simulator. Thanks to the capabilities that are built into the MakeCode Arcade editor, the pages will update as I push releases to GitHub. I’ve written the project in TypeScript. I may port a simpler version of the game to Blocks down the road.

The current version has the ability to load and save games, although I have not yet surfaced those capabilities within the game (i.e., you cannot access those functions within the game… Not yet, anyway.). Eventually, players will be able to load a previous game from the attract screen.

Thanks again for all of your interest! I’m having a ton of fun with this project.

10 Likes

Oh wow this one is so cool! Don’t know how I missed it for a month

10 Likes

I did a lot of infrastructure updates this weekend. I finished the management of game save files (save, load, rename, and delete) along with a custom system menu. I also added semi-automated testing that can be activated from the system menu. You can see that in action in the movie below.

I’ve incorporated these core functions into my JavaScript template. I’m interested in porting a simplified version of the game state management as a Blocks plugin.

I also pulled in the animated board from the prototype and added an animated background. You can see that in one of the automated tests below.

Next steps for this upcoming weekend include an “automated roll” demo (where the players just roll and move around the board) and creating the player status sprites at the top of the screen.

Lemme know what you think! If you have any questions, then please feel free to ask. Hope you all had a great weekend!

Monopoly-20230424

5 Likes

I’ve reintroduced the automated roll test. Players buy properties and exchange rents. I have most of the cards implemented. I’ve left the version currently in GitHub in testing mode, so this is the version that automatically runs when you start the game. As always, feel free to download the code and play with it! Scroll back a few posts to find a link to the repo.

This is my current to-do list. I keep it updated at the top of main.ts.

Immediate TODO List

  • Implement property states.
  • Automated roll tests.
    - Handle doubles.
  • Player information sprites.
  • Dialog replacement. Add to multiplayer-prompt.
    - game.splashForPlayer()
    - game.showLongTextForPlayer()
  • Card decks. (Mostly implemented.)
    - Jail cards as properties.
    - Implement PlayerState.MovingForCard
  • Handle player passing Go.
  • Add bank changing bump.
  • Implement Player.goToJail()
  • Player actions menu (generic, e.g., while in jail, buy or auction property).
    - Add key binding sprites dynamically.
  • Player actions menu (turn).
    - Bankrupt.
    - Build/mortgage.
    - Trade.
  • Player actions menu (while in jail).
  • Auction property.

Quick screen cap is below. Note that the colors in all of my screen captures are a bit off because I have to compress the image quite a bit for the forum.

Have a great week, all!

Monopoly-20230501

9 Likes

Here’s another sneak peek. I couldn’t resist building this one after finding the page linked below!

If you want to try to roll your own version of the game, then take a look at this excellent writeup on solving Countdown numbers games. My algorithm follows this writeup closely. There are some optimizations that still can be done, though.

https://www.cgjennings.ca/articles/countdown-numbers/

Have fun playing and/or building!

5 Likes

I’ve been out of town for a couple of weeks, but I made some progress this weekend. I had to refactor a core mechanism but I’m back on track now! You won’t see much change in the demo available above, but you should see some hints of where I’m taking this project in the to-do list below. More to come next week!

Had a great day last week meeting up with the MakeCode team in person at the Microsoft campus in Redmond, Washington. Thanks again for having me!

Immediate TODO List

  • Refactor game loop to use an action queue.
    - Actions go to a common queue.
    - If queue is empty, then it’s time to start the next turn.
    - Handle player roll.
    - Handle speed die.
    - Handle board spaces.
    - Handle free spaces
    - Handle tax spaces.
    - Handle property spaces.
    - Handle unowned properties.
    - Handle property purchase.
    - Handle property auctions.
    - Handle owned properties.
    - Handle go-to-jail spaces.
    - Handle card spaces.
    - Handle bus spaces.
    - Handle card actions.
    - Handle bank payouts.
    - Handle collect from each player.
    - Handle get out of jail card.
    - Handle go to any space.
    - Handle go to property group.
    - Handle go to space.
    - Handle go to space and all pay.
    - Handle lottery.
    - Handle move backward.
    - Handle pay bank.
    - Handle pay each player.
    - Handle tax.
    - Handle property repairs.
    - Handle roll backward.
    - Handle skip next turn.
    - Handle bankrupt player.
  • Player actions menu (generic, e.g., while in jail, buy or auction property).
    - Add key binding sprites dynamically.
    - Move button actions below d-pad (maybe?)
  • Add player flag to skip next turn.
    - Process skipped turn.
  • Player actions menu (while in jail).
  • Player actions menu (turn).
    - Roll.
    - Bankrupt.
    - Build/mortgage.
    - Trade.
  • Auction property.
    - Multiplayer.
    - Single controller.
  • Buy/sell houses.
  • Trade mechanism.
  • Mega Monopoly accommodations.
    - Add assets.
    - Add alternate board.
    - Add speed die.
    - Add bus tickets.
    - Add game settings.
    - Add train depots.
  • Refactor board and properties.
  • Move (most) strings to central location.
5 Likes

MONOPOLY??? HOW DID I NOT SEE THIS BEFORE

(sentence :roll_eyes:)

4 Likes

Big ahh list lol
Good job on how much you’ve done and how organised you are! Glad to see you sharing your progress and I hope to play the game soon!

4 Likes

I threw this one together just to get some ideas out of my head. I’ll add it to the list of projects to complete later. Just like with all of my other projects, though, feel free to take the code and run with this one on your own!

3 Likes

I think this is as far as I can get this weekend. Lots of progress, though! The demo seems to be working well and includes most of the functionality needed for the automated game to work. Feel free to take a look using the link from an earlier post. Have a great week!

Immediate TODO List

  • Refactor game loop to use an action queue.
    - Actions go to a common queue.
    - If queue is empty, then it’s time to start the next turn.
    - Handle player roll.
    - Handle speed die.
    - Handle board spaces.
    - Handle auction spaces.
    - Handle free spaces.
    - Handle tax spaces.
    - Handle property spaces.
    - Handle unowned properties.
    - Handle property purchase.
    - Handle owned properties.
    - Handle go-to-jail spaces.
    - Handle card spaces.
    - Handle bus spaces.
    - Handle gift spaces.
    - Handle card actions.
    - Handle bank payouts.
    - Handle collect from each player.
    - Handle get out of jail card.
    - Handle go to any space.
    - Handle go to property group.
    - Handle go to space.
    - Handle go to space and all pay.
    - Handle lottery.
    - Handle move backward.
    - Handle pay bank.
    - Handle pay each player.
    - Handle selective tax.
    - Handle property repairs.
    - Handle roll backward.
    - Handle skip next turn.
    - Handle bus options.
    - Handle gift options.
    - Handle bankrupt player.
  • Player actions menu (generic, e.g., while in jail, buy or auction property).
    - Add key binding sprites dynamically.
    - Move button actions below d-pad (maybe?)
  • Player actions menu (while in jail).
  • Player actions menu (turn).
    - Roll.
    - Bankrupt.
    - Build/mortgage.
    - Trade.
  • Player actions menu (unowned property).
    - Buy.
    - Auction.
  • Auction property.
    - Multiplayer.
    - Single controller.
  • Buy/sell houses + mortgage property.
  • Trade mechanism.
  • Mega Monopoly accommodations.
    - Add assets.
    - Add alternate board.
    - Add speed die.
    - Add bus tickets.
    - Add game settings.
    - Add train depots.
  • Reverse print in header of player status images.
5 Likes

I think keeping track of your progress like this is great, it makes it very clear what you’ve done and where you’re going next. I’m definitely going to utilize this when making my games or working on my projects in the future!

3 Likes

Updated a previous project. Now you can select tiles and build a word! A selects a tile; B removes the last tile selected. Right now, you can select any tile; the tiles do not have to touch … yet. Again, just getting some ideas out of my head. :smiling_face: Have fun!

3 Likes

Made some progress over this extended holiday weekend. Hope those of you who also are in North America enjoyed your holiday weekends!

I’ve finished adding the core functionality, and the automated game seems to work well. There are a couple of bugs yet to squash, and I need to add some additional functionality to allow humans to play and to make decisions. It’s getting there! Feel free to take a look and to play with the code. I’ll include the link again here.

Have a great week, everyone!

Immediate TODO List

  • [/] Refactor game loop to use an action queue.
    - [/] Handle card actions.
    - Handle go to any space.
    - Handle go to space and all pay.
    - Handle lottery.
    - Handle selective tax.
    - Handle roll backward.
    - Handle skip next turn.
    - Handle bus options.
    - Handle gift options.
    - Handle bankrupt player.
  • Player actions menu (generic, e.g., while in jail, buy or auction property).
    - Add key binding sprites dynamically.
    - Move button actions below d-pad (maybe?)
  • Player actions menu (while in jail).
  • Player actions menu (turn).
    - Roll.
    - Bankrupt.
    - Build/mortgage.
    - Trade.
  • Player actions menu (unowned property).
    - Buy.
    - Auction.
  • Auction property.
    - Multiplayer.
    - Single controller.
  • Buy/sell houses + mortgage property.
  • Trade mechanism.
  • BUG: Verify payments on railroads.
    - Saw an NaN payment after moving for a card.
    - Card may be missing a value or the payment calculation may be looking
    at wrong location in the values array.
  • Review logic for paying on Go.
    - Landing on Go and then moving for speed die results in double payment.
    - Perhaps refactor to count the number of times Go has paid and the
    number of times you have passed it. Moving backward over Go would
    deduct from counter.
  • BUG: After jail roll, current space for next player is processed.
  • BUG: PrintBank() is not erasing correct area.
  • Switch automatic processing for triples to pick a random location on the board.
  • Incorporate auction space after all properties are sold into automatic processing.
  • Move avatar into jail space if player is in jail.
  • BUG: Triples gets stuck in a loop.
  • BUG: Card type GoToGroup no longer working.
  • Move double speed when not moving for roll.
  • BUG: Multiple players in jail gets automated game stuck in loop.
    + Wasn’t getting stuck in a loop. Was skipping a player.
  • Refactor action queue. Use methods rather than manually manipulating queue.
  • BUG: Roll after card moving to utility is not paying owner.
6 Likes