Jump to content
  • Advertisement
Sign in to follow this  
  • entries
  • comment
  • views

#5 - Testing the attributes



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:




Coefficient of different attributes















Starting Position









  • 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!


Recommended Comments

There are no comments to display.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement
  • Advertisement
  • Blog Entries

  • Similar Content

    • By Valdiralita
      TLDR: is there a way to "capture" a constantbuffer in a command list (like the InstanceCount in DrawIndexedInstanced is captured) so i can update it before the command list is executed?
      I want to draw millions of objects and i use instancing to do so. My current implementation caches the matrix buffers, so I have a constantbuffer for each model-material combination. This is done so I don't have to rebuild my buffers each frame, because most of my scene is static, but can move at times. To update the constantbuffers I have another thread which creates command lists to update the constantbuffers and executes them on the immediate context. My render thread(s) also create command lists ahead of time to issue to the gpu when a new frame is needed. The matrix buffers are shared between multiple render threads.
      The result is that when an object changes color, so it goes from one model-material buffer to another, it hides one frame and is visible at the next or is for one frame at a different location where an object was before. I speculate this is because the constantbuffer for matrices is updated immediately but the InstanceCount in the draw command list is not. This leads to matrices which contain old or uninitialized memory.
      Is there a way to update my matrix constant buffers without stalling every renderthread and invalidating all render command lists?
    • By addictCoderCS
      Hi there,
      I'm working on an web RPG. This is not and action RPG. 
      The problem is I work full-time as a software developer and while I may get some code for the game done at work, I'm still a little short on time. So I'm looking for a second programmer to help me out. Please no beginners. I prefer working with someone who has built a full game (client, game server, web services, db)
      Proficient in C# Proficient in .Net Core 2.X Experience with ASP.Net Core MVC Experience with ASP.Net Core Web API Experience with Unity 2018 Proficient in SQL and SQLite Proficient in EntityFramework Experience in AWS (RDS and EC2) Experience with IIS I'll handle the cost of any third-party services, domain names, etc. I'm just looking for a little help to get this game built in a reasonable amount of time. It will also be nice to bounce some ideas off each other.
      If you are interested, please send me an email: addictcodercs@gmail.com
    • By petya-kurochkin
      Hello, I have a 'join'-function that joins an array's elements to a string. This is what I want:
      vector<int> a = {1,2,3} array<int, 3> b = {1,2,3} cout << join(a) << endl; // "1, 2, 3" cout << join(b) << endl; // "1, 2, 3" So I'm trying to declare the function this way:
      template <typename T, typename C> string join(const C<const T> &arr, const string &delimiter = ", "){ ... } But without any success. I understand, that I could declare it this way:
      template <typename T> string join(T &arr){ ... } or this way:
      template <typename Iter> string join(Iter &begin, Iter &end){ ... }
      But I just wonder, is it possible to implement it like:
      template <typename T, typename Collection> string join(const Collection<const T> &data){ ... } Thank you!
    • By sausagejohnson
      All games written with Orx have a profile screen that can be called up to monitor for any inefficiencies or bottlenecks.
      Iarwain will be demonstrating the Profile Mode for Orx over twitch tomorrow night at:
      Come along if you're interested to learn about it. There will be an opportunity to cover any topics after the demo.
      Here's some time zones as a guide to when it's on:
      Montréal, Canada      Tue, 11 Dec 2018 at 1:00 am EST     
      Rome, Italy           Tue, 11 Dec 2018 at 7:00 am CET     
      San Francisco, USA    Mon, 10 Dec 2018 at 10:00 pm PST    
      Sydney, Australia     Tue, 11 Dec 2018 at 5:00 pm AEDT    
      You can check other time zones here: https://www.timeanddate.com/worldclock/converter.html?iso=20181211T060000&amp;p1=165&amp;p2=215&amp;p3=224&amp;p4=240

    • By Florian Gionnane
      Hi everybody !
      We are an indie startup called Darkstar Games !
      We are just creating our first game called Greater powers, a novel type medieval fantasy TCG MMORPG with which we use unity. 
      We develop our games for Android, PC, iOS, and we have a software kit developer contract with Microsoft to adapt them to VR Microsoft HoloLens and VR Magic Leap in the future.
      We are developing our own alpha for the Kickstarter campaign at the moment !
      So we are actively searching for motivated programmers willing to take place in our project to build the engine we are creating of our own right now ! The game is coded in C# and any unity experience is greatly appreciated! 
      We collaborate to the startup worldwide remotely !
      Programmers collaborating to the project such as building the alpha become shareholders and are hired in the start-up launch !
      Here are some links about the project:
      If anyone interested, please send your resume to flosambora123@gmail.com
      Have a nice day !


Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!