Ryan Thoryk, November 29, 2006
The History and Future of the Skyscraper Project
The Skyscraper Project originally began with the simplistic design of a 138-story skyscraper called the Triton Center that I completed on May 4, 2002, using the MyHouse for Windows 6.5 architectural designer application. Later that year I started tinkering with the TrueVision3D graphics engine through Visual Basic 6 (since I've been extremely proficient in VB since 1996, but am moving on to other languages), and made a small building with a simple but working elevator. This became Skyscraper versions 0.1 and 0.2. I then continued to enhance it, and decided to try to simulate the entire Triton Center (this earlier design of the building was very unrealistic, as you'll see). I eventually finished the entire external structure of the building, and still had only 1 elevator. A single shaft bank was made, which housed 10 elevators (5 on each side), and then I eventually duplicated it to increase the number of elevators to 40, divided into 4 shaft banks. All the other parts of the program were made and enhanced, and I started to hit serious limitations that were not only in my program design, but also in the Visual Basic language itself. So after version 0.96 I started redesigning the core of the program, but it became too unstable and needed a great deal of work (this was originally going to be version 0.97); so I took the old 0.96, fixed it up (became the stable branch), and released it as 1.0. I renamed 0.97 to 1.1 alpha, which is the current development project. I rewrote somewhere around 25% of Skyscraper, and then after long periods of other stuff going on in my life, I decided to stop the VB rewrite and start porting the entire program over to C++ (I considered the C# and Java languages before choosing C++). A while back I started running into issues with the Crystal Space graphics engine (which the C++ version uses), and decided to postpone it and continue the VB rewrite. The VB rewrite continued and was going strong, and the code was designed to be very clean and easily portable to C++ when the time came. Eventually, I got Crystal Space to work properly, and started rewriting it again in C++, using the VB code as the main reference. As of now, both VB projects have been abandoned, and development on the C++ version is going strong. If you compare the current C++ (and even the last VB code) to the original 1.0 version, you'll notice that the 1.0 version's code is very sloppy, while the newer versions are extremely clean and well formatted.
Scalability and expandability factors were considered as early as summer 2003, but were postponed until later (and they’re now the core of the design plans of the development version). In 2003 many people were complaining about how Skyscraper only simulated a single building, and couldn’t allow people to design their own. I explained to them that Skyscraper was still in an early stage, and that the ability to load other buildings as data files is nowhere near easy, especially when you consider the massive design problems in the original 1.0 version. Many people also were practically drooling over the thought of having multiplayer deathmatch support in the program, but I explained that I needed to finish more of the main simulation before I start working on multiplayer features. I also had the idea of creating a building designer applet inside the program, which would allow the user to create their own building and save it into a data file, which could then be loaded by the simulation. The original ideas called for a simplistic CAD-like interface that would allow the person to visually create a building which would then be translated into a data file. I then expanded on that idea by planning a single player portion of the simulation engine, which would allow the user to create the building during the simulation, and would make it operate very similar to both Sim Tower and Yoot Tower (sequel). All of these ideas will require a massive amount of coding, and so a team of developers would be extremely important.
The Skyscraper version 2.0 design plans (of which 1.1 alpha is part of) calls for a highly realistic, real-time, first-person 3D simulation of buildings loaded via scripted data files. It also calls for a building designer application that will allow users to create their own buildings and simulate them, single-player elements similar to Sim Tower and Yoot Tower, and multi-player elements such as deathmatch or capture-the-flag scenarios. Everything possible will be simulated, including all the standard interior parts of buildings (rooms, elevators, stairs, etc), but also crawlspaces, air ducts, elevator shafts, elevator escape hatches, breakable windows, pipe/utility shafts, structural supports and lots more. 1.1 alpha is designed around a core simulation engine called the Scalable Building Simulator, or SBS. The entire building simulation system will eventually be contained in a series of library files (DLLs on Windows, and shared objects on Unix), and the current design reflects this intention. The program’s application file will only be the graphical front-end for SBS; everything else will be either handled internally by SBS or by other libraries that would use the SBS API. This way, the program becomes an actual backend simulation engine that can be linked with other applications. It uses the wxWidgets library as the GUI toolkit, allowing it to be graphically multi-platform (for Windows, MacOS, Linux, BSD, Solaris, IRIX, etc). Currently there are 4 buildings available for version 1.1: the 142-story Triton Center (version 3) which I designed, the 138-story Glass Tower from the movie The Towering Inferno, the 108-story Sears Tower, and a small sample building demonstrating the use of the scripting language. All of these buildings are under active development. Other buildings can be created fairly easily by writing a building data file, and then loading it when Skyscraper is started. As for the building designer, it will allow users to create basic floorplans which would define all of the elements of the building, and would then hook into SBS so that the fully-simulated 3D version of the building will be shown as it's being built - so if the user adds a wall on the floorplan, the wall will appear in the 3D view; and if they delete the wall, the wall will delete in the 3D view. Objects such as elevators will be created and tested in realtime.