One day I decided that I wanted to put some paper models of the Frontier Elite ships on my shelves. I'm a big fan of the Amiga version because of its flat simple colors. The PC version had textures which felt a bit superficial and noisy. I'm also not a fan of spaceship designs with meaningless greebles (mystery surface details, wings, spikes).
In a way, the Elite ships are designed with the same discipline as the first Enterprise ship (The Original Series) from Star Trek. The Elite ships just engines and a hull, with a pretty smooth outer surface. Since it's up to the player to fill the empty hull of a ship with stuff, an anonymous exterior is suitable.
There are some paper models of the Elite ships out there already. There are many different versions of Elite and to my knowledge I'm the only one who have made a set of ships specifically from the Amiga version.
The original Elite was ported for many different computers. Some versions only rendered a wire frame of the ships, whilst others drew filled colored polygons. I don't think there was a consistent color scheme between the different versions though.
Also, the original Elite might have had much larger ships than Frontier, and you could only fly the Cobra Mk.III. Frontier is more realistic and in some ways a bit stale compared to the original. In Frontier it's possible to figure out the dimensions of the ships by parking them next to other objects in the game.
My scale is based on the '////50 METERS////' sign over the docking bay, but I did not calculate scales or make the ship meshes based on eye observations. I managed to come over the ship data from FFE - Frontier: First Encounters (Elite 3). I'm assuming the ship geometries haven't changed much, if any. I do know that some of the ships looks different in the original Elite though, and that some were... decommissioned. It's a pity that the Wolf Mk.II didn't make it to Frontier.
By looking at the binary data from FFE, I figured out that the 50 meter sign is 114 688 units wide (with left bit shift applied). I use this value to make a scale constant which I then use with the ship vertices to come up with some sort of scale. It seems to work, I've measured the dimensions of a few ships as they fly out of the docking bay, and also with the external camera ship switch trick. My program seems to be doing the scaling correct. However, there are some problems with the scale which I'll get to later.
Actually, you can somewhat tell that the scales for the ships are a bit off in the game. Ever noticed how the Police Vipers and the Constrictors are really easy to hit? It's because they are really large compared to their 'internal capacity'.
Unfortunately I only have screenshots of two red ships here, but what you're seeing is a Constrictor (top) and an Adder (bottom). The Constrictor is a 120t ship, and the Adder is 55t. The equipment on the exterior of the ships, such as landing gears, can be scaled up to double size by the game engine. However, fuel scopes and missiles are always at the same scale.
You can see the absurd scale difference here if you look at the size of the fuel scoop and keep in mind that the constrictor is just (120 / 55 =) 2.18 times larger (cargo space wise) than the Adder. The Constrictor seems to be over 2 times longer than the Adder, but keep in mind that volume doesn't double with length. According to my (admittedly sloppy) calculations, the Constrictor needs 8 times more space than the Adder to store a cargo ton.
Recently I've been playing Frontier using the winUAE emulator with the JIT CPU boost and I get a really nice and smooth framerate, and the whole game behaves more precise. It seems the game was programmed to take advantage of fast processors. I get a steady 50fps everywhere in the game, no 1-2fps stuttering in police crowds or cities. Since the external camera movement seem to be framerate based it's possible to get much more precise viewing angles with JIT on.
I was planning to do most of the ships, but the scales have given me trouble, and I had to figure out a way to come up with a comfortable folding process. In the end I settled for tabs which slip into.. tabs, but there's still work to be done on bleeding (to avoid white along certain edges).
I've written a program which does a lot of work for me. At first I had it output stuff at a 1:220 scale, but in the end I went for a 1:200 scale where the ships are scaled after their internal capacity (5 cubic meters per cargo ton). I chose this scale simply because it looks right to me. I know there's a 3D program plug-in that can measure the volume of 3D models, but I don't have the ships as models, or a 3D program, or that plugin. My solution was to use clay to approximate the volumes. It's not a very accurate method, but it's better than wild guesses and the in game scales, I think.
Unfortunately this mean I'll have to go... 'un-canon', not only with the hull sizes, but also with the add-on sizes (landing gears, missiles, etc). I think in the end it will look better with the scale of the add-ons shared consistantly between the ships.
Current Work In Progress file - These ships are in 1:200 scale and 5 cu.m per ton. That is, not the 'correct' in game scale. If you view this file with a browser, most of the stuff will be cropped out. Use an SVG editor. The Viper on there is not of my intended scale and should be fixed.
A rather lousy photo of the ships I've been working on, searching for a good scale.
Update: Sep 12, 2010 : Telia server dead. Changed links to SVG files.
Update: Jan 1, 2010 : Still haven't updated the ship sheets. I did rewrite a bunch of text on this page though, and add a bunch of pictures.
Update: Jul 19, 2006 : No update, I kind of got deterred by the scale problem. The Viper on the 'Work in Progress' sheet below has the wrong size (It should be closer to the size of the Viper on the Viper sheets), and I still need to do all the add-ons (landing gear rescaling etc.).
Update: May 2, 2006 : Quick recap. There's no problem figuring out the sizes of the ships in the game. The problem is that the sizes of the game is misrepresentave of the cargo capacity of the ships. Since the cargo is generic and all ships can be made into trading ships there's no reason for a Gecko to be able to fit a cargo unit in 2 cubic meters whilst the Tiger Trader needs 14.6 cubic meters per cargo unit (see chart at the bottom).
Below is a link to screenshots of the ship purchase view. I think I might have missed a few ships here, such as the Osprey.
You'll need Inkscape to work with the SVG file. Firefox 1.5+ should be able to display the SVG file, but it will pixelate it and make it fuzzy if you're trying to print it. These sheets are A4 by the way, and the scale is relative to that. I won't upload any highres bitmaps atm. The quality and size of the SVG files is superior anyways. I suppose I could use 'cloning' a bit to avoid redundant data and get filesize down further.
I ended up writing my own program because 3D programs didn't do what I want, and they have unintuitive and constipated GUIs. Writing my own program was actually easier than learning how to use an existing one.
So, here's what my program does. It loads the ship points (vertices, but I'll call them points) from the firstenc.dat file (Frontier: First Encounters). Actually it doesn't, it just uses the vertice data output from a data extractor program Theun over at Jongware wrote (he also provided me with the font). I reformat the data it so BlitzMax can read it as data a'la Basic style.
The program reads in this data as x-y-z coordinates and flips them to make the ship symetrical and stuff. There's quite a bit of data for a ship, but only the first part has the ship geometry so my program can be set to ignore the rest of it.
I don't actually know any 3D programming, but I've toyed around a bit with Sodaplay and I had this idea of writing an unwrapper where I use lines which all try to be a certain length. I get the length by running a 3D pythagora between the 3D points. It works. This spared me the agony of doing 'trig' stuff.
The program also scales the ships properly and 'saves' the data as SVG that can be read by a free vector illustrator program called Inkscape. Before saving it takes a look at the lines and tries to figure out where to put triangles (fill). I also made a little thing which allows me to make male and female tabs.
Huge thanks to Jongware Theun for the work he had done reverse engineering the Frontier data. I was really lucky to be able to get the data (without having to hex around in files) and the neat Bezier line font. Stumbling upon InkScape helped a lot too. SVG was perfect for this kind of thing since it's just text although the XML format does make the files rather large).
Once I've pasted the text output from the program into a text editor and saved as *.svg I can load it into Inkscape. The triangles are grouped so I ungroup (Object/Ungroup), then I select and merge (Path/Union) triangles that are meant to be a quad, pentagram or whatever.
What's left then is coloring, rotating and moving stuff into suitable positions. Adding the ship gear like antennas, landing wheels, reg-id etc. There are a couple of different color schemes for each ship, and I've tried to mimic what color palettes Frontier uses, there's often a saturated and dull version of each color.
I'm using screenshots or my program to eyeball the placements of things on the hull. I could actually use the data from the program here but so far I have no function for aligning those points along with the hull. If I add them into the geometry I might distort the hull shape since the points might not be placed exactly along the hull surface (I'd get a bump which would flatten and thus produce the distortion). In any case eyeballing is sufficiently precise here.
After having assembled a couple of ships it seemed to me like Braben grossly miscalculated the scales of the ships. Maybe it was because he only has a signed char/byte for the geometry, and then left bit shifted that value to scale the ships. This might have made it hard to control the scale of the ships.
Like I've discussed earlier, I'm leaning towards rescaling all of the ships based on their internal volume, which can be estimated using the gross mass of the ship. Surface area is important in a combat situation, so I'm guessing that the ships are probably pretty dense when fully laden, maybe 5cu.m per ton (200kg/cu.m).
I made a table below to illustrate what's going on. My values here are Cube ratio and 5 cu.m/ton Length (m). I get the Cube value by making a clay cube, then making a ruler based on the length of a cube side. Then I make a ship of the clay and measure it against the ruler. This gives me a 'density' of sorts. Although the results are rather imprecise, it's still obvious that the ship scales are off.
Although one might argue that nothing is known about the densities of the ships, I think sizes based on tonnage seem a lot more reasonable since they reflect actual performance.
|Ship name||Cube ratio||Gross ton||Volume (cu.m)||Volume/ton||Game Length (m)||5 cu.m/ton Length (m)||Length Difference|
|Viper Defense Craft||2.30||65.00||468.01||7.20||17.86||15.81||1.13|
The length of my 1:200 paper models is naturally Length in meter / 2, centimeters. A 20 meter ship is 10 cm. Below is a table of ship lengths using different densities (cubic meters needed to store one cargo ton).
|Ship name||Cube ratio||Gross ton||1||2||3||4||5||6||7||8||9||10|
|Viper Defense Craft||2.30||65.00||9.25||11.65||13.34||14.68||15.81||16.80||17.69||18.50||19.24||19.92|