Version 1.4 changelog
Code Rally v1.4 has just been released and it contains a bunch of minor tweaks from the 1.3 release, including some new tracks. Read on to find out what we've been up to, including some of the background changes that have been going on to improve server performance and stability.
Server side changes
Firstly we've done a lot of work on our server side code and more importantly our server side deployment:
- Full IBM Bluemix support. This change has gotten rid of all server side file system IO that we needed, and allows us to fully deploy on IBM Bluemix. The advantage of this is that it is much easier to deploy and manage our live server on Bluemix than it was on our VM image. As you pay for capacity based on memory Code Rally is a good fit as it is more CPU intensive than memory intensive, giving us substantial cost savings over a VM deployment.
- More efficient database storage. We store everything in our SQL database around the game - race times, player data and the data for every race run. Initially this worked well, but as more and more races get run the data stored in the DB started to slow down everything - including login requests. This reached a head early last year where the timeouts in our Eclipse client code were not long enough to let the server respond to the queries causing all kinds of problems (as a request would timeout Eclipse would submit a new request - this caused a snowball effect of requests that would kill the servers). To fix this we have started culling race data from the database based on age. Once we start reaching a certain database size we start removing replay data for old races - the time and your position and kept but the data to do a visual replay is removed to save on space, and to make sure our database remains responsive.
- One-click deployment. This is currently not live as we're working on the final details but we now have a space in dev ops services where we can click a single button to run tests against our server code, and if it passes to automatically deploy a new instance of the multiplayer server to Bluemix. What this means right now is that we can rush out hotfixes and new deployments quickly if any issues arise. What it means in the future is if you want to have your own private race server to race on deployment will be easier than ever.
- Web based configuration. The old configuration xml file for the multiplayer server doesn't work in a Bluemix environment as you don't have a traditional file system on which to deploy and edit the config xml. To overcome this change we have added a configuration webpage which once you login will allow you to administer the Code Rally server very easily. Configuration options include enabling OAuth for Google, Facebook and Twitter (as well as configuring it) and other server related tweaks such as frame times and race simulation tick rate. Now we have easier configuration we can start to look at adding more config options to play with so this is a great addition which we can build upon.
Client side changes
The server side code is not the only part to have received updates - we've also been working hard on improving the Eclipse UI code to make things easier than before. Here's the list of client updates:
- New server page. We've gotten rid of the very simplistic servers view and given them their own window. Now you can look at the state of all of the servers configured in your Eclipse client and update on or many of them on the fly. You can see what version a server is at, as well as test connections to the server before trying to login. The biggest performance advantage to this is that by removing the view of the servers from the main part of the user interface is that we don't need to update the view every time you do something like entering a race (which is what used to happen). All in all this move makes it easier to view and manage your connected multiplayer servers as well as massively improving the responsiveness of the UI (especially where you listed a server that was unreachable/offline).
- New login options. You can now see who you are logged in as, and login if you had not done so yet from the enter race dialog (in addition to the new servers management page). This means that if you set up everything for a race but forgot to login you don't lose all that progress, which is nice. The enter race windows also received some more tweaks and improvements to the user interface.
- Better error messages. In our fight to get rid of useless, generic error messages we've identified and improved a whole bunch of messages you could see if something isn't working or configured correctly.
- More multithreading. We've moved more UI actions onto other threads so a single action doesn't lock the whole UI up until it completes. The UI is now much more responsive than before.
We've added three new tracks to the game! All the tracks are in full HD so should look even prettier than our existing tracks.
- Low Earth Orbit. This mid-difficulty track has you racing new space ships around an environment with satellite debris and other space born objects. Watch those tight corners as it's very easy to go off the track on this one!
- Desert. This mid-difficulty track is set with dune buggies racing around a sandy environment. Watch your traction as it's very easy to lose control when you're on the loose sand off the main track.
- Water. We've added a boats track! Race speedboats around this environment but try to avoid the sharks!
Version 1.3 changelog
- New installer! Instead of downloading all of the files needed to install onto a 32 or 64 bit system you download an installer that then grabs the files you need from our repository, reducing the total download size.
- Installer support for Linux! We now have an installer that will automatically install everything needed on Linux systems.
- OSX install instructions. We have a set of instructions for manually installing the game to OSX (and Windows/Linux if you don't want to use the installer). We currently do not officially support running a code rally multiplayer server on OSX, although the plugin and UI works allowing you to race on other multiplayer servers such as the IBM cloud server.
- Optimised all database access on the multiplayer server to improve performance
- Added options to limit the number of race results returned to the client in the "my races" view (there is a small white triangle pointing down on the My races view's top right corner - click it!)
- Fixed OAuth login for Facebook and Twitter - you can now choose those as OAuth providers on the IBM cloud server login (note you can only link 1 OAuth account to a username, so you can't change from Google to Twitter or Facebook if you have an existing username. Create a new username to use the new OAuth providers).
- Changed Google OAuth login to give the option of logging out if you have logged in with a different Google ID on the client
- Improved WebSocket performance when racing using agent AIs.
- Optimised the memory profile of the multiplayer server - this fixed memory leaks and made it as small and efficient as possible
- Bluemix! You can now create an AgentAI and run it locally or deploy it to Bluemix - see the Bluemix racer blog post for info
- New submit race window - this one's much prettier!
- Defaults on physical car attributes updated
- Default Advanced AI code now contains enough code for an AI to complete a race (albeit badly)
- Default Agent AI code now contains enough code for an AI to complete a race (albeit badly)
- The advanced AI has been disabled on the IBM cloud - instead create an Agent AI which lets you change your code on the fly and see console output as it is racing.
- Updated Liberty runtime to Liberty beta
- Updated WDT to latest beta
- Updated Eclipse to Eclipse Luna
- Added Bluemix tools to allow fast and easy deployment of AI and web application to the cloud
Version 1.2 changelog
- Includes all fixes, additions and tweaks included in the 1.1 beta releases, including
- New, streamlined installer for Windows - comes with Java, Eclipse, Code Rally Eclipse plugin, Code Rally server code, WebSphere Developer Tools for Eclipse, WebSphere Application Server Liberty Profile all in one package.
- New "spectator mode" - in the Code Rally server tab right-click on a server and select "spectator mode" to watch a constant stream of races run on the server. This shows newest races first, and avoids showing repeats of races as much as possible.
- OAuth login via Google. You can now authenticate on a server using Google OAuth. See our blog post about how this works and how to set it up on your own server.
- Improved UI responsiveness - using the power of threads we have worked hard on improving the responsiveness in parts of the UI. This release has made the UI smoother when submitting cars to races.
- Local AI streaming using the new Agent AI - this is a big change so here are the highlights:
- Instead of submitting an AI to the race server to compile and run remotely you can now run a car AI on your own computer.
- The AI deployed on your own computer uses websockets to stream information to and from the server simulating the race - this means you can add system.outs and other debug statements to your code to better understand what is happening in a race.
- You can change your code on-the-fly as your local AI is deployed onto a WebSphere Application Server Liberty Profile runtime - change your AI code as the race is running and have your AI immediately start running with the new code.
- Watch races live - with Agent AIs running in a race you can watch the race as it happens - either by double-clicking on a race in the "my races" view or by selecting "watch now" when your AI has successfully been submitted.
- There is a tolerance for how long the server will wait for an AI to respond, so races where participants have a high ping or do not respond quickly enough will appear to be running slower than normal - this is intentional as the whole simulation is slowed down to allow AIs enough time.
- We have updated the versions of Eclipse, WebSphere Developer Tools for Eclipse and WebSphere Application Server Liberty Profile to the latest releases.
Due to the size and complexity of the updates we cannot support using the "update" functionality in the IBM install manager.
- If you have a previous 1.1 or 1.2 install you will need to:
- start IBM install manager and uninstall the existing Code Rally before installing the new version
- go into your user folder (in windows this is where "my documents", "my downloads" etc are listed) and go into the "user/.coderally" directory. Delete the "lib" folder - this is required for the update to be successful.
- Use a new workspace for your eclipse install - a lot of settings have changed so an old workspace will not work correctly
- Existing AIs will still work with the new code - we have not removed any existing functionality and everything should work as before. Existing race information will still work, as will any leaderboard information (you will need to migrate the leaderboard - you can find it in your "wlp/usr/<server name>/resources" directory - copy it to the new server you create for the 1.3 code rally install
- Existing 1.1 beta clients will still continue to work with the 1.3 servers
- Existing Advanced AIs will continue to operate as before - you will need to create new Agent AIs to take advantage of race streaming, live code changes mid race and improved debug and system out functionality (the logic is the same in both AIs, however Agent AIs have a slightly different setup).