Hi everyone,
I am creating a turn-based game about cycling, where players compete to reach the finish line first. All players have a different strength (which determines their dice roll) and several (12) attributes, which determine the bonuses to add to their dice roll.
I have thought out the system and implemented it last week. Of course it does not feel completely balanced yet, so i tried to do some testing to balance it, however, i have never done this before and have no idea if i am doing it in an efficient way.
I documented my efforts in a blog post (link). I would be very happy to hear your thoughts on them and any suggestions to improve this process (or better define the final goal it should have).
Hopefully the Math forum is the right forum for this.
Thanks in advance!

Since my last update, i have implemented most of the attributes in Cycling - The board game.
Quick recap: the game is about getting to the finish line first. Each turn, each player rolls a dice (D6) and moves the amount of squares. The odds of the dice are rigged based on the player's strength (higher strength = better odds). Next to the dice roll the player can gain bonuses to move additional squares. These bonuses are based on their attributes (which can range from 1 - 20).
Now that i have implemented them, i have to check if they add fun to the game. Fun is of course hard to measure, but what i am aiming for mostly is balance between the different elements. For example, if one attribute is much more important than others, the others are irrelevant.
To test them, i left my computer running for a night and simulate over 600 different races with different AI players (with every time different attributes and strength). I now had a lot of data points to analyse with.
I decided to use a multiple regression analysis, where i analysed the impact of the strength and all the different attributes on the outcome of the race. This led to the following results:
R-squared:
0.43
Coefficient of different attributes
Strength
-4,59
Climbing
-3,60
SoloRiding
-3,06
GroupTechnique
-3,04
Flair
-1,57
Sprinting
-0,93
Restoration
-0,84
Starting Position
-0,73
Determination
-0,51
Composure
-0,36
Luck
0,12
Conclusions
This stuff really makes me feel like a nerd, which is nice 😉
The R squared means that more than half of the results are not explained by this model
The fact that all attributes are negative is correct (the higher the attribute, the lower your total final time)
The attribute luck has a different sign, which basically means that a lower attribute is better (although the coefficient is very small, so technically it means that it is not relevant)
Strength is more important than all the different attributes
Climbing, solo riding and group technique are most important
Composure and determination hardly matter at all
I am somewhat happy with these outcomes, but find it difficult to determine my final goal here. I think it is not a good idea to have all attributes at (roughly) the same value, since then it won't matter which one you improve at all.
On the other hand, an extremely large difference between attributes, means that your strategy should be to simply focus on the best attributes, which is also technically not really fun.
For now, my next move will be to make the lowest three attributes somewhat more influential so that they matter more. When that is done, i am just going to continue playtesting manually and get a feeling for how the game is running. At that point i will also upload a new version, so i can (hopefully) get some feedback on the game itself.
In the meantime, please feel free to try out the game yourself (link) or even better, let me know what your ideas would be to further balance the game.
Thank you once again for reading!

After a rather busy week, i finally had some time left over to do some coding again. I decided to continue on the Attribute system in the Cycling Manager game (see earlier blog posts). After some work i have now added the following attributes:
Climbing (gives a chance of a 1-2 bonus to add to a 1-6 diceroll when starting your turn on a hill or mountain)
Soloriding (gives a chance of a 1-2 bonus to add to a 1-6 diceroll when starting your turn solo)
Group Technique (gives a chance of a 1-2 bonus to add to a 1-6 diceroll when starting your turn in a group of 3 or more players)
Sprinting (gives you an entirely new dice to throw when sprinting to the finish line)
Restoration (gives you a better odd of restoring energy between races)
Flair (gives you a chance to move an extra square when you move energy)
So far, the code is reasonably manageable, however the results do not feel perfect yet. For some reason the bonuses can seem overpowered and i also feel that i have not yet struck a good balance between tactics and luck. I think the only solution is to add another part to the game where you can influence your attributes. Currently the attributes of all the players in the team are fixed, which means that you make the most important decision at the start of the game (which players do i choose) and then just see what happens (with minimal tactical influence in using or restoring energy).
Stuff to think about!
My next step will be to add the remaining attributes and then upload this version of the game. Hopefully i will receive some feedback and get a great new idea to continue with the game.
Thank you for reading!
PS. If you are interested in the game, you can download it on gamejolt (link).

Hi Lesmou,
Sounds like a nice game idea! I have always wanted to develop a Football Manager-like game myself and also have some experience in C# and MonoGame. Let me know if I can help or if you want to join up together.
Anyway, best of luck!
Cheers,
Jaap

As mentioned in my earlier blog I have chosen to implement an attribute system in my game Cycling the board game.
The goal in this game is to cross the finish line first. This is determined (basically) by rolling a dice (d6) each turn and moving the amount of squares. Each player has a slightly different dice, based on the player’s skill, where players with a higher skill have better dice (e.g. better odds to throw a high number).
When the dice is rolled, bonuses to the dice roll are applied based on the player’s attributes and the game world. For example, if the player is on a mountain square and has a high value for attribute Climbing, he could get some bonus points this turn to add to his dice and move further.
This is the first time I have implemented such a system and I am happy to hear any feedback from you how this could be done better.
To implement this system, I took the following steps:
Add a new enum AttributeTypes with a list of all (12) attributes
Create a new Class “Attribute”. This Class consists of an AttributeType (one of the twelve) and an int to store the value (1-20) for this attribute.
Add a new Class “AttributeManager” and added an instance of this class to each player. This Class consists of a list of all Attributes for the player and contains functionality to check for bonuses based on the attributes and the game world.
The system works pretty well, but somehow doesn’t feel right, maybe because it is too complex, maybe because it is just the first time I am doing this. I also wonder how this would be done in a more complex game like Football Manager for example.
Thank You for reading and please let me know your thoughts on the subject in the comments!
PS. I have not implemented the actual functionality to use the attributes to add bonus points to the dice, that will be the subject of my next blog probably.

Since the big yearly professional cycling race (Le Tour de France) is being held at this moment, I wanted to work on my own Cycling Game. The first version of this game was launched about three weeks ago (link), but it still didn't feel finished.
The main reason is that there was not too much difference in the players. All players had just one strength value (determining their race strength) and two different traits (like being better in the mountains or when riding solo).
I wanted to try and change this by removing the traits and the single attribute and adding 14 new attributes. As of right now i have added the attributes mentioned below to the game. They don't actually do anything, that is the topic for the next update.
Climbing,
Composure,
Condition,
Descending,
Determination,
Flair,
GroupTechnique,
Luck,
Restoration,
SoloRiding,
Sprinting,
Stability,
Strength,
Tactics.
My next goal is to remove the traits (that is going to be a big change, since they are used almost everywhere in the code) and then start to add functionality to the different traits and see how the game will feel afterwards.
I will keep you posted!

Finally, the barebones first version of my personal blog on game development is online. I will post my entries both on this website and on my personal blog on Blogger (link).
Let's start with a little introduction about myself and my games, in the coming weeks I will try to post regularly on the subjects I am struggling with as I am improving the games I have made so far and as I think about new topics for new games.
Enjoy!
About me
My name is Jaap, I live in the Netherlands and I enjoy both programming and designing games. I started the latter when i was probably around 8 years old and (according to my parents) i spent considerate amounts of time trying to create my own games with pawns, marbles, dinky toys and little toy soldiers. Theoretically this means i have been a game developer for 25 years 😉
When i was 12 i started programming in GWBASIC. I really liked it a lot and have been doing it a lot (sometimes more and sometimes less of course). I have tinkered with different languages and IDE's to finally settle on the ones mentioned below.
Besides programming i have a full time job, a beautiful wife, two kids and two dogs (german shepherds). When i am not behind a computer trying to program stuff, i love to play video games myself or to go outside to go hiking or running with my dogs.
Games I like (to create and to play)
First of all, i really enjoy turnbased games. I love the ability to think about stuff and i hate losing because of a wrong buttonpress in the heat of the moment. Basically all the games i have built so far, and probably will build in the future are therefore turnbased.
Besides computer games i really like sports a lot. Mostly football, cycling and running. This combined with the fact that i enjoy turnbased games is the reason why my favourite game of all time is the Football Manager series. It’s also for this reason that I started working on Cycling the board game and Football Manager Stories.
Finally i love to build and manage stuff. I must have played each entry in the Civilization series for at least 100 hours or more. I also enjoyed older simulation/strategy games like Rollercoaster Tycoon, Settlers and Capitalism 2. These games inspired me to create the games Tycoon and Civilization Wars.
My progamming experience
I do not have any formal education in programming but i do enjoy the technical side of programming. I mostly work in Visual Studio, programming in the Monogame framework in C#. Back in 2012 i participated in the AI Mooc, organized by Stanford and Google.
Why Black Wolf?
Because i have an awesome black German Shepherd called Nero, who looks a lot like a wolf, I decided to make him my mascot for my game development.
My games
So far, i have started development on four different games:
Cycling - the board game
Tycoon
Civilization wars
Football manager stories
Please click on any of the links to find out more about them (links go to my personal website).
Thank you for reading!

Thank you very much for all the advice! I changed my code to get the values of the screensize dynamically (before that i hardcoded them to 1366*768). I just needed to find out the simple GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Width line to fix it.

Hi everyone, A few weeks ago i was finally able to upload my first game to gamejolt.com so others could try and play it. The first feedback i received however, was the fact that the game wasn't working beyond the main menu. I tried to replicate the problem and discovered the following. When i play the game on my own laptop in resolution 1366*768 (the resolution i developed in) everything works fine. However, when the game runs on a different resolution (1920*1080) the buttons i created won't activate when clicked. I fixed this by running the game in windowed mode (not fullscreen). How can i have the game run in full screen mode on any resolution? And how can i know what resolution to use for each user? Or is this so complicated that it is advisable to run the game in windowed mode? Below you can find my code for drawing my buttons and processing the clicks. Note that everything is working fine in the correct resolution. Thank you in advance for your ideas and guidelines! The relevant part of the drawing method // Draws the button background
spritebatch.Draw(texture, DrawRectangle, sourceRectangle, Color.White);
The relevant code of the update methode // Process clicks
Boolean mouseInDrawRectangle = DrawRectangle.Contains(new Point(world.MouseState.X, world.MouseState.Y));
// Mouse up on button
if (world.MouseState.LeftButton == ButtonState.Released && mouseInDrawRectangle == true)
if (state == Enums.ClickState.mousedown)
{
state = Enums.ClickState.selected;
buttonClicked = true;
}
else
state = Enums.ClickState.hoover;

Hi everyone,
I would love to participate as part of a team. I am not very experienced and don't have too many free time, but it sounds fun to do and i would love to participate in a contest sometimes.
I have some coding experience in C# / XNA, but do not expect to much of it.
Happy to learn from the experience :)

Thank you very much for the elaboration Xai, i will definitely keep these in mind when constructing my game. I now also see that this form of composition is quite related to an object oriented approach. Although i do have to improve my skills with interfaces and specific C# stuff like delegates, i get the global idea and should be able to get this working one way or the other.
Thanks again!

Thank you very much for the responses everybody! Since i am quite new to this topic (and to programming in general), what would be the correct terms to Google for an example or maybe even a tutorial in C# for a compositional approach?

Hi everybody,
After a short pause i recently picked up programming for fun again. I am currently working on a collectible card game (like MtG but then with a somewhat smaller scope ;-).
The thing is that i am unsure how to create my class structure. Right now i have a class called Card and some subclasses for (for example, when staying in MtG terminology: an Instant).
However, when i am adding my cards, i have to use a lot of Switch statements. For example (still using instants from MtG):
Switch (card)
case Lightning Bolt:
dealDamage(3)
case Terror:
destroyCreature(creature)
Of course this is completely impossible to manage with a lot of cards. What would the class structure of MtG look like:
- Object
- Card : Object
- Sorcery/Instant/Creature : Card
- Terror, Lightning bolt, etc : Instant
So in the end you would get approximately 500+ classes. That doesn't feel right either.
What is the solution here?
Thank you very much in advance!

Good evening everybody,
A few years ago (about 2) i got back into game development after only having toyed around with it when i was a teenager. My objective is absolutely not to make any commercial quality games or even make money by developing games, i just love to try and build stuff that runs on my computer screen and games are the things which interest me most.
After reading a lot of posts on these forums i created my first few (relatively simple) games. Of course I started with Tic-Tac-Toe, then moved on to a really small 2D action game where you had to throw presents down chimneys (based on the Dutch concept of Sinterklaas) and finally some 2D tilebased games (an RPG and a small business simulation game).
While i really enjoyed making these games, i also ran into a problem. Right now i am able to create small games (of course only to my own standards), but when i try to make something bigger, i mostly run into the problem that i lose control of my code. My code gets messy and i can no longer find all the classes, methods and objects i created.
I would really like to solve this issue but i am not sure how to do this. I learned programming by reading some online tutorials and then just jumping in head-first. Another thing that really helped me was the MOOC Beginning Game Programming using C#. I would really like to continue learning to fix the problem mentioned above, but most resources available seem either too advanced for me (and therefore irrelevant) or too simple (since i am just past the beginners course).
Does anyone have an idea how i could procede in this situation? I realize the question is kind of vague, but maybe someone who struggled with the same issue could offer some advice.
Thank you very much in advance for your response!
PS. My current programming language is C# (XNA) and for the games i want to make, well let's say i prefer Civilization over Call of Duty; Football Manager over FIFA and HearthStone over WoW. I hope that says enough ;-)