BackToRoots Code
Status: Alpha
Brought to you by:
fearyourself
-------------------------- Back to roots 2.52 Saturday December 3rd 2011 -------------------------- #0 Installing and executing To install the game, you will need to first get the library dependencies backtoroots requires: * SDL and SDL_gfx * OpenGL/Glut * libxml++ 2.6 * lua5.1 Once the dependencies are installed, a simple make command compiles the engine: make Finally, once correctly compiled, the engine can be launched with: ./backtoroots There are currently different "start" files that change the engine's behavior: * data/start_u4.xml: Ultima 4's port * data/start_u5.xml: Ultima 5's port * data/start_chapter1.xml: the first technical demo around Britain * data/start_chapter2.xml: the first technical demo around Skara Brae * data/start_u5_dungeon.xml: Ultima 5's port but in front of a dungeon (word of power is: FALLAH) * data/start.xml: the current technical demo's preparation To launch one of these versions, first delete the save game folder "saves/last": rm saves/last/*; ./backtoroots <your file> Enjoy! #1 History The project, as many pet projects, started on a random evening with the idea to recreate the games of old. As a big fan of the Ultima series, it was a logical step to try to recreate these games. The purpose of the backtoroots engine is to create an engine that can re-create the first Ultima games transparently. The final goal is to have a single engine to run the first Ultima games of the series. The git logs show that the first commit (though through SVN) was done on Saturday 24th March 2010. In 21 days, it will have been one year and eight months that the project started. Interestingly enough, a lot has been done but there is still a lot to do. As any project of this complexity, as one problem gets solved, twenty new ones appear. The engine itself has focused on the Ultima 4 and Ultima 5 games since they are the most complex of the games the engine should support. To support the previous Ultimas, it seems that turning off features will be relatively simple. For motivation reasons however, one rule of thumb has been to release technical demos that have a bit of content but simply show what the engine is capable of in different settings. There have been, to date, three technical demos: 1) Cities, npcs, and surroundings: showing that we can enter cities, interact with NPCs, buy things, and handle quests 2) Transportation and pirates: illustrating the support of transportation in the game and how the engine handles water combat 3) Handling dungeons, the rendering and combats of the U5 port #2 Objectives The objective of the backtoroots engine is to achieve two major goals: * Full support of the first Ultima games: striving to stay true to their style, limitations, and simply their awesomeness * Allow users to add elements, change the basic behavior, or even create new worlds, stories, in the old classic RPG style These objectives are done by checking if the Ultima support is not only for Ultima 5 but also Ultima 4. The initial work was done to support Ultima 4 since there had been a lot of previous work on it (for example the xu4 project which provides a lot of data file information). This allowed the engine to advance quickly and base the data extraction procedures with previous findings. However, the Ultima 5 port is more complex since there is very little information about the data files. Work has been done by various people in the past but there is, to my knowledge, no one who has handled every file and thus decrypted what each byte of each data file (and code file) represents. This means that, in certain cases, development and progress is very slow for the Ultima 5 port. #3 Where is the project up to and what is being currently done? The project is relatively in an advanced state. With currently 522 files (data and code) and more than 57 thousand lines of code, the engine is able to recreate the exterior and cities of the 4th and 5th installment of the Ultima franchise. The NPCs are implemented and their behavior schemes for Ultima 5. Stores for buying and selling are handled for the 4th installment, the price tags not being yet found for the Ultima 5 game has left that side empty. Transportation has been finalized for both and combat is also fully handled with experience points done. The implementation of dungeons for the U5 port is done. The rendering for the Ultima 5 dungeons is entirely done and so is the loading of the dungeons. A user can now enter and exit a dungeon. But dungeons were much more: handling the rooms and their triggers, defining the traps, the chests, the monster generation, etc. This has now been handled, as has the going into the underworld. #4 What could you do for backtoroots? There is a lot to be done for the project itself: * Users ** Probably one of the most important elements is to have people test the game and check for bugs *** There are bound to be a lot and these should be noted somewhere to get fixed at some point :-) * Artists can help create new tiles, logos, and general graphics for the game ** Though the engine supports the original games, it is important and interesting to provide an independent graphical theme * Writers can help create new stories, quests, a whole new world ** For the same reasons as for the artists, the engine can handle new elements that can be non-Ultima related or simply stories untold * Low-level programmers ** As the work goes from data-file decryption to data-file loading, there is a lot to be done at the low level *** Understanding what each byte represents in each data-file is an important step before implementing any loading/saving function * High-level programmers ** Whether the low-level programmer has discovered meaning to a new segment of data or there is simply something to be done for the engine, there is always work to be done at the high level *** The project itself mixing C++, OpenGL via SDL, XML for the user defined data; there is room for everyone to find an interest *** Since the engine itself currently is divided into 3 side-projects: Ultima 4's port, Ultima 5's port, and the independent engine, there is an easy way to separate the work between programmers Hopefully, you enjoy the engine and the work done, Jc