Topic
  • 3 replies
  • Latest Post - ‏2013-10-21T14:23:54Z by TomBanks
VladS.
VladS.
13 Posts

Pinned topic User stories

‏2013-08-18T19:10:52Z |

How about having a little section for user stories,  features and improvements that would be nice to have in Code Rally Project.

I will start a first one:

  1. Is it possible to have the best time replay for the track in public access? Not necessary from eclipse client, a youtube video would be work as well; especially now when you are having this code contest.
  • TomBanks
    TomBanks
    66 Posts

    Re: User stories

    ‏2013-08-19T10:31:02Z  

    Thanks for the suggestion - we will be putting videos of all the winners up at the end of the competition. The reason for not displaying them until then is so that people can't copy the behavior of the AI by watching how it completes its race.

    As for automatically replaying the fastest times for each track - good idea I've added it to the list of stories we have, although it will need to go through prioritization before I'll have an idea on when/if it may get implemented.

  • ddrogahn
    ddrogahn
    4 Posts

    Re: User stories

    ‏2013-10-17T18:12:07Z  

    My suggestions:

    * it would be interesting to see a final round of the top racers all together -- in addition to the top time replays.

    * far too much randomness in the game.  The best times all have 100x more races than the rest -- but that's the only way to get a lucky outcome from a random number generator.

    * start order: One person only has a 1/3 chance of being in a lead position.  It's difficult to judge an improvement in your code when times vary by tens of seconds without any code changes (but the winner is by tens of milliseconds).  A time trial mode with just your car and optional hazards would be extremely helpful.

    * start order with other racers: There's only a 6% chance that two cars will get the 2 lead spots.  I was in some races with other players, but it was never a fair competition - not even fun to watch, because the slow, AI cars get a better spot and get in the way again when you lap them!  Because of that, a racer could have an advantage when racing against other good cars.  On one occasion I was able to race 2 of my cars, and thus one less dumb AI (accidentally, due to slow My Races trouble I mention below).  Is it possible/legal to have a racing "team" that communicates during a race?

    * it would speed up optimizing if it was possible to ghost a couple cars together to directly compare them

    * documentation is nonexistant: length unit appears to be pixels, speed appears to be pixels per second, but the source libraries have scale constants for things like FEET_PER_MILE, METERS_PER_SEC_TO_MPH, SCALE_BOX_TO_GAME ?

    * No access to map edge data: best workaround I could come up with was to infer from the extremes of the checkpoint positions.  Edges should be defined, or proximity should have a callback, or be in the obstacle callback.

    * When there are large speed differences, the obstacle callback comes too late to evade.  A neat idea might be something like sonar/radar with inputs for angle and beam width returning distance and object type (opponent, obstacle, wall).

    * there should be a way to clear or limit the length of "My Races" or filter it per track.  After a couple hundred races the list would no longer update automatically and take many seconds to refresh.  I cant imagine how some people got their race count up to 1000 or 2000 (if each race takes 30s, that's 16 hours of time...)

    * race playback speed varies hugely (sometimes half? speed) and often varies during a single race playback (may depend on the track?).

    * pond track has the cars starting facing the wrong direction

    * scoring & timing: it would be nice to see an early solution get some bonus vs a last-minute solution (although I may be a bit biased on that)

    * Beginners might benefit from an easier speed control (eg. setCruseSpeed)

    * I would love to see a Handbrake -- I want to skid around those corners!

  • TomBanks
    TomBanks
    66 Posts

    Re: User stories

    ‏2013-10-21T14:23:54Z  
    • ddrogahn
    • ‏2013-10-17T18:12:07Z

    My suggestions:

    * it would be interesting to see a final round of the top racers all together -- in addition to the top time replays.

    * far too much randomness in the game.  The best times all have 100x more races than the rest -- but that's the only way to get a lucky outcome from a random number generator.

    * start order: One person only has a 1/3 chance of being in a lead position.  It's difficult to judge an improvement in your code when times vary by tens of seconds without any code changes (but the winner is by tens of milliseconds).  A time trial mode with just your car and optional hazards would be extremely helpful.

    * start order with other racers: There's only a 6% chance that two cars will get the 2 lead spots.  I was in some races with other players, but it was never a fair competition - not even fun to watch, because the slow, AI cars get a better spot and get in the way again when you lap them!  Because of that, a racer could have an advantage when racing against other good cars.  On one occasion I was able to race 2 of my cars, and thus one less dumb AI (accidentally, due to slow My Races trouble I mention below).  Is it possible/legal to have a racing "team" that communicates during a race?

    * it would speed up optimizing if it was possible to ghost a couple cars together to directly compare them

    * documentation is nonexistant: length unit appears to be pixels, speed appears to be pixels per second, but the source libraries have scale constants for things like FEET_PER_MILE, METERS_PER_SEC_TO_MPH, SCALE_BOX_TO_GAME ?

    * No access to map edge data: best workaround I could come up with was to infer from the extremes of the checkpoint positions.  Edges should be defined, or proximity should have a callback, or be in the obstacle callback.

    * When there are large speed differences, the obstacle callback comes too late to evade.  A neat idea might be something like sonar/radar with inputs for angle and beam width returning distance and object type (opponent, obstacle, wall).

    * there should be a way to clear or limit the length of "My Races" or filter it per track.  After a couple hundred races the list would no longer update automatically and take many seconds to refresh.  I cant imagine how some people got their race count up to 1000 or 2000 (if each race takes 30s, that's 16 hours of time...)

    * race playback speed varies hugely (sometimes half? speed) and often varies during a single race playback (may depend on the track?).

    * pond track has the cars starting facing the wrong direction

    * scoring & timing: it would be nice to see an early solution get some bonus vs a last-minute solution (although I may be a bit biased on that)

    * Beginners might benefit from an easier speed control (eg. setCruseSpeed)

    * I would love to see a Handbrake -- I want to skid around those corners!

    Hi ddrogahn,

    • We are currently looking into a nice way for users to be able to watch the fastest times for a track no matter who entered. This also gives users the ability to police races so if they see behavior indicative of cheating they can report it (this is quite a sizable addition but something that will help in the long run).
    • Luck is a part of any race, however as this is a technical game I do understand that having the luck/randomness element can make it unfairly easy/difficult for people. We can look into various options including re-running a race with the same opponent AIs in the same places for easy comparisons, as well as a bot-free option for those working very closely on their code. I would argue that having an AI that can deal with bots getting in the way is one of the ultimate challenges in the game.
    • Above solution would help with start orders. When it comes to entering multiples of your own car that is possible and is not against the rules. Communicating between cars is also allowed. Things that are not allowed include controlling other peoples' AIs, teleporting cars/objects, manipulating the engine to allow your car to move faster per game tick, moving/removing checkpoints or otherwise getting a race to complete before all cars have completed 3 laps or a race timeout at 5:30.
    • Ghosting cars is an interesting option but would need a re-write of how we record races before that is reasonably possible. You could modify the race rendering code in the client to replay two races in the same window at the same time, but that's obviously not something I would want many people to have to do so a solution from us would be best.
    • Documentation is definitely something I am not happy about and is being worked on at the moment.
    • I agree with the point of detecting map edges - this is becoming an obvious feature people need to have very good AIs for tracks such as pond that have AIs racing very close to the edge. The question is should we add an event that gets called when you get close or provide an API call that allows your AI to detect if it is getting close.
    • Having obstacle warning distances vary by speed would be the most reasonable option. It does make an interesting tradeoff for AIs that target maximum speed over being more cautious and avoiding all collisions.
    • We are aware of performance issues when querying large number of races and would like to give people the option of deleting a race from the view.
    • Race playback is CPU limited on the client machine - if you are seeing slowdowns check your CPU usage to see if your machine is hitting a CPU limit (slow playback will be caused by high CPU usage as the race is rendered in real-time on the client).
    • I want to revisit the starting positions on pond and desk tracks (we recently fixed the off-track mapping on the desk tracks on the cloud so individual race track issues are being worked on).
    • Online competitions for the fastest car around a track are interesting when it comes to early entries being a target to beat. The most important thing is that we keep the game fair and providing an advantage (no matter how small) for people who enter early is something I am not prepared to do. There are other options we can employ from hiding the fastest 5 times (and the order of those times) from view to having a cloud stored version of an AI that races against the other 5 fastest AIs in a single race at the end of a competition to select a winner (different options have different pros and cons).
    • I want to avoid having a setSpeed style option and hope that improved documentation and a simpler API to get the speed of a vehicle would help in this regard. We don't want to do everything for people entering.
    • I want to re-visit the braking implementation as I am not happy with it right now. I had not considered it before but a handbrake would be interesting and not too difficult to add (apply some of the current braking physics in the initial velocity while removing a ~90% traction would do the trick).

    Thank you for the feedback - as you can see most of those points are on the list to be addressed when possible but your feedback has helped identify a couple I had not considered and helps to ensure my list has the correct priority ordering. If you have any more ideas/feedback please feel free to post them too.

     

    Thanks,

    Tom