26 June 2011

Source Code Now Live!

Our Runtime-Compiled C++ demo source code is now available on Github under the permissive zlib license. If you're not familiar with Git, there is also a link to simply download as a zip file.

After our talk on Friday at the Paris Game/AI Conference, we wanted to make the source code available as soon as possible for people to try out themselves.

If you haven't seen the talk and are wondering what Runtime-Compiled C++ is about: in brief it's a layered framework for rapid development of applications, allowing you to change the C++ source and automatically apply the changes while it is running. It includes crash handling - most errors in runtime modifiable code that would usually crash your app, you will find you can continue from and the engine will keep running. Overall, we can achieve seamless iterative development in pure C++.

This is all best explained with a video! We hope to get one posted here soon.

This really is a prototype, developed in our free time, and not one we've been able to test on a huge variety of systems. There are a number of dependencies: at minimum you'll need Windows XP or above, the June 2010 DirectX SDK and Visual Studio C++ 2010, either a commercial version or the free Express one will do. You'll also need the redistributable packages for Visual Studio C++ 2008 (and possibly VS 2005), due to some dependencies we currently only have binaries libraries for but which we intend to move to full source. If you get a side by side configuration error message, you're probably missing one of these. It's fairly likely you'll already have these installed, so try and compile and run the code before searching down the dependencies. We also have an issue with spaces in the path, so place the code in a path with no spaces. We'll do our best to resolve these issues ASAP.

First things you'll want to know once it's compiled: set SimpleTest as the startup project, this is the "Pulse" demo; when it's running, click on the splash screen to start the action; if you click the icon in the top-left of the window, you'll get some buttons include "New game" and "Restart", which will let you switch to the full set of game objects and reset the simulation.

You will see "Aurora" mentioned in the project - this is what we call the open source engine we've put together for the demo. It's really a very simple one, but we do plan to build upon it, for instance completely replacing the graphics code and bringing in more open-source components wherever possible. Three of the projects in the solution are named RocketLib* - this is the GUI framework we use.

The code we've put together is a prototype that we plan to improve and build upon, and we'd be glad of help to do that - but it's also a testbed. There are alternative ways we can approach crash protection, serialisation, compilation - so we'd like to actively encourage people to fork the project, try their own ideas and let us know their experiences. We've focussed on how it can be applied to games development, partly because that is our background, but we also think it could be useful in other industries.

All of the above will be expanded on in posts to the forums.

We hope you find the source code useful and we'll be really interested to hear your feedback.

8 comments:

  1. I'll be keeping my eyes on this project. Could turn out to be a pretty disruptive technology if the code runs nearly as fast as native C++.

    ReplyDelete
  2. Hi Sam, good to hear it. To be clear though, it _is_ native C++. It just requires you to use a few more virtual functions in your code than you would necessarily require otherwise, in the interfaces between objects - and there are ways you can keep the impact of that to a minimum.
    We'll be explaining more on this in future posts.

    ReplyDelete
  3. This is great! Can you explain how intrusive it is? I've thinking to do this kind of live editing on my engine 2D, but using LLVM/Clang to be more transparent, but your solution looks more direct and simplier.

    ReplyDelete
  4. Hi Fungos. As to how intrusive it is, this depends on how you use it. There are constraints, take a look at the ConsoleExample project for the shortest example piece of code, and try out the examples in the wiki (link at the top right of this page).

    ReplyDelete
  5. Gonna try this out now. Haven't heard such things in C++ world.

    ReplyDelete
  6. Hi


    I have some troubles with start on MVS 2013;
    RCppC said what cannot find path for visual studio

    ReplyDelete
    Replies
    1. Hi Nick,

      We haven’t implemented support for Visual Studio 2013 as yet. This should be relatively simple to do, however I won't be able to look into it for a while. If you look at the function GetPathsOfVisualStudioInstalls you should be able to work out how to add support by increasing the NUMNAMESTOCHECK to 5 and adding a case for the MSCVERSION of the 2013 compiler.

      Hope that helps, feel free to ask if you have questions.

      Cheers,

      Doug

      Delete