This has been a project very slow in the making but I feel I am at a fairly decent point to share what I have been working on. Back at the start of last summer, I was really getting into the board game RISK as I hadn't played it in forever and really enjoyed playing it. One problem: games take forever to play, primarily from rolling the dice over and over. To remedy that, I had the idea to make an automatic dice roller. However, rather than making that, I felt I could work on re-creating the entire board game for the CE.

Here we are, over 6 months later, and don't have a completed game. There is some good news: I did go ahead and take the code from the game and whip up a little program that will be used for dice rolling in the game but also functions as a standalone program. It can be found here.

It fulfils my original intention to speed up games of RISK, but I know I can do more with the full game. Currently, I have only completed the "draft" portion of the turns, leaving me to do the "attack" and "fortify" stages, not including any of the cards. I got caught up in school the past semester so I didn't have much time to work, but this upcoming semester should be significantly easier. Regardless, here's a little sneak peek into what the game is currently looking like:

A couple pretty cool things to note about how I'm laying out the game:
1. All map data is stored in appvars. This means that it will be possible to have custom levels (like those in the game RISK: Global Domination)
2. Games can easily be saved and loaded from appvars
3. Since the game will be set as a pass-and-play, a turn counter is included to make sure nobody is cheating
4. There will be various gameplay settings including fixed card trade-in values, automatic vs manual assign territories at the start, and pass-through captured territories when fortifying.

The game is still in early stages hence the tons of open space for text and general unfinished looks.
I'd love to hear any feedback anyone has to offer, whether it be questions or comments (really wondering what people think of the box-based navigation, I feel a cursor navigation is a bit too clunky and can be annoying at times)
Could you possibly also create custom mechanicsets or rulesets (say, if you wanted to play Warzone instead of Risk) and custom colorsets, also stored in AppVars?
This looks really cool, I loved playing risk as a kid! The navigation seems easy enough to get use to. Keep up the great work!
TheLastMillennial wrote:
This looks really cool, I loved playing risk as a kid! The navigation seems easy enough to get use to. Keep up the great work!


Risk is like the armpit of "board game night" in my family (that and monopoly). Never fully figured out why (bc uh, they refuse to play it), but I imagine it has to do with time investment. Razz

I would love to try out your port though!

Keep the good work. Wink
This looks really great! I'm excited to try it out sometime. Hopefully you'll make sure to include a saving feature, or else you'll need to make sure it won't use up the battery before a game is over Razz
Risk definitely a huge time killer, but it also was my childhood time killer. Good work!
[quote="KaluW_"]
TheLastMillennial wrote:
...but I imagine it has to do with time investment. Razz


That and Catan... The full version (With Seafarers and C&K). With six players. And a stupidly giant map. And a bunch of totally arbitrary house rules. It starts to feel like a giant boardgame version of some demented hexagonal civ... Shock
I'd be interested if you could elaborate on how the world map is implemented. This is something that was quite difficult in making Contagion CE, and it looks like you probably thought of a neat solution to that challenge, given all those regions and that you're saving it in an appvar.
darkwater4213 wrote:
Could you possibly also create custom mechanicsets or rulesets (say, if you wanted to play Warzone instead of Risk) and custom colorsets, also stored in AppVars?

I haven't heard of Warzone so I would look into that. Regarding custom colorsets: I never considered this but that could definitely be a possibility as right now the colors are simply hard coded into a custom palette.
TheLastMillennial wrote:
This looks really cool, I loved playing risk as a kid! The navigation seems easy enough to get use to. Keep up the great work!

Thanks! My one concern with the current navigation is that the territories are being cycled through an unsorted list (for example, the drafting part cycles through the user's owned territories). These territories are currently arranged in the order they were gained but I may switch to ascending territory id (see my reply to epsilon5 for how that works) to have them make a little more sense.
TIny_Hacker wrote:
This looks really great! I'm excited to try it out sometime. Hopefully you'll make sure to include a saving feature, or else you'll need to make sure it won't use up the battery before a game is over Razz

Saving is a feature I guarantee will be a part of it. I have the code planned out and am jumping around how I want to implement it such as allowing multiple saves for the same map or only one (if there was a previous one it would simply overwrite it).
epsilon5 wrote:
I'd be interested if you could elaborate on how the world map is implemented. This is something that was quite difficult in making Contagion CE, and it looks like you probably thought of a neat solution to that challenge, given all those regions and that you're saving it in an appvar.

I feel my method for loading map data was a little complicated but efficient at storing all the necessary information. I wrote a little C++ program to convert all of the data into one binary file and then use convbin to convert that into an appvar. A list of the territories and continents are saved in text files. The territories file consists of
    Map Name, # of Territories
    Name of Territory, x position on sprite, y position on sprite, continent index, # connections, [connection indexes]
All territories were put in this file by repeating the second line for each. Indexes were determined by order, so the first territory had index 0, next had 1, and so on (This made matching the connection indexes slightly annoying but was trivial after writing territory names first).
For the continents, they were stored in a similar list and given indexes the same way territories were.
    # of Continents
    Continent Name, Bonus Value, # of Territories in Continents, [territory indexes]
The map is actually being scaled by 2 when being displayed, and the actual map looks like this

The palette is constructed with fixed entries in the beginning (for example, black, white, the ocean color, selected and deselected colors for each player) and then the rest did not matter as it would be constructed during runtime.

This was all compiled into one appvar and read from the program. The program used the x, y positions of the territories to get the palette index for the territory and then palette swapping is used to change the color of the territories. The x, y position is also used to determine where the troop count is displayed, so it does not need to be over the territory as long as the palette index at that position is the same as the territory.

I really hope that description makes at least some sense and wasn't too long!

On a side note: I also changed chars[1-10] to be the small number font (3x5) used to display territory troop count but I'm interested in hearing opinions on this. I'm worried it'd too difficult to read but it results in a much less cluttered map compared to the default font.
matkeller19 wrote:
[Information about map data implementation]

That seems to be an effective implementation, and effectively similar to how it was implemented in Contagion CE. The way that you've approached continents is interesting though, as that was something that I struggled with finding a solution to when EverydayCode and I were working on the game, so we ended up settling on just seven of what would be regions in your game. Having an easy way to convert things is great, as well.

So, the way that's done does make sense, and seems to be a good way of doing things, at least as far as I can tell.

As for the issue of the small font, I think that that would be preferable to having a lot of clutter on the screen. I'd still like to see how things look with both implementations, but based on another game that uses small numbers, Zombie Chase CE, I think that would work very well, as long as you're using a legible font.

Looking forward to more updates on this!
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 1
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement