Platform Masters Title
Platform Masters - Will you be the world's next platform master?

Automating 24-channel ground - comparing spans

Date: Mar 21, 2011
Screenshot #131: Unfortunately, YouTube videos have a rather low quality which makes comparing difficult. Thus, here's a way to tell the difference between the 12-channel ground and 24-channel ground. In Carnivalesta, the area beyond the lit carnival grounds becomes dark, very dark. So, the part on the border has to fade from light to dark. This also just happens to be a great way to compare the two systems.

For starters, look at the part that is fully lit. Compare this to the part that's otherwise halfway between. The part that's fully lit is how far apart the spacing between layers (channels) was for the 12-channel system. The dimmer part is the kind of spacing used for the 24-channel ground. This is the closest possible to comparing the difference between the two. In short, the spacing between layers is much closer together, allowing for a much higher resolution. The clouds use 16 times as many layers which otherwise allows for their motion to be "perfect" for a flat plane.

Automating 24-channel ground - results 2

Date: Mar 21, 2011
Screenshot #132: Here's another example of the results. The grass up close, if you look very closely, has a "seam" between the layers. Can you find them? You won't easily be able to see it on the river though. The grass on the other side of the river is too far away to get any detail from and some layers won't even get drawn due to optimizations I have. After all, what's the point of drawing a fully opaque image on top of another fully opaque image of the same size?

Final Carnivalesta enhancements - designing 1

Date: Mar 24, 2011
Screenshot #133: At first glance, it appears that Carnivalesta's scenery hasn't changed, outside a small bit in the foreground for the food and barker stands. There's actually several changes here but the changes are not yet finished. This is about 1/2 to 2/3 of the way through the near-complete redesign. Most of the stuff on the carnival grounds is otherwise being left unchanged, outside a few small improvements or enhancements. First, the barker and food stands have quite a few changes made. Second, the hills and mountains beyond have otherwise been completely redone. It's not obvious... unless you closely compare an older screenshot with this, like screenshots 54 to 56 here. (It's amazing how much Platform Masters has changed since this point!) Let's start from the foreground and work our way to the background, to the edge of visibility.

The biggest change is the currency. Before, dollars were used, based on a 2.5x inflation (that is, what $2 would buy today is the same as what $5 would buy during the time Platform Masters takes place (2073, if the banner is any hint)). Now, the units of measure are in Egani. 1 Egan is essentially the same as 2 cents (in US currency). Thus, 90 Egani for a 20-fluid-ounce slushie drink is actually quite reasonable - that's USD$1.80 for comparison (a 50 to 1 ratio). This seems high, but keep in mind that, twice confirmed (the State Fair and the Renaissance Festival in Minnesota), prices of food and drink at carnivals are raised a lot and I mean a lot. This is actually quite low for a carnival though - I've seen something like this going for $2.00 to $2.50.

The various stands also have more detail to them. The "Race to the Center" area has the most amount of extra detail. The balls with the "Ball Toss" stand have much more accurate lighting, since I already had the spherical lighting ready-made (as per my book's front cover). The "Hot Dogs" stand has "footlong" renamed to "footer". This was due to the currency change. Other stands got widened because of this. The donut stand has new text in the center - each single donut costs 40 Egani as the base and each topping (glaze, cinnamon, frosting, sprinkles, interior filling, etc.) adds 5 Egani to that. Lastly, the video arcade has a spectrum for the letters that spell "video arcade".

A layer of stands at 1.5, 2.5, and 3.5 are planned for in the upcoming update, to make this area more "crowded" and more natural-looking (50 feet apart instead of 100). I've otherwise run out of ideas for food stands (duplicating existing ones is the best I can think of for now, such as another pizza, cotton candy, or donut stand at 3.5).

The rides haven't changed, but I should now have enough plans to cover the entire 1024-pixel span (8192 CU).

The roller coaster track needs a fade from light to dark (light at the bottom, dark at the top). This otherwise exactly mimics what you see in the foreground levels and also the ground beyond the carnival grounds (screenshot 131 shows this very well).

Just past the roller coaster tracks is where a hotel will be. This 8-story hotel is on an extension to the pavement, of which uses a ground decal. A ground decal is needed anyway for the light fade beyond the carnival grounds to be much more accurate.

The hills beyond are the biggest change of them all. They don't look much different, but they are. They've been completely redone. The furthest of these, the mountains, even get snow on their peaks because, unlike what you've seen in previous worlds (worlds 1 to 8), these are more rugged mountains (from being younger in geologic terms).

The only thing missing for these is just the sky glow effect, from the now 3-mile-wide city. The city was 39,424 CU for the main part, but now, it's 104,160 CU wide for this same part. The lights are also much more realistic. Previously, they scaled linearly with distance. That's not what the laws of physics say. Double the distance from a light source, and that light is only 1/4 as bright as received by the viewer, not half. It's an inverse square, or, more specifically, "Brightness = RelativeDistance^-2". In my case, I use a slightly different but identical formula, "Opacity = MaxBase/Scaling^2". Identical? "Opacity = MaxBase*Scaling^-2" is otherwise a clone of the original - it's basic algebra.

MaxBase is the point in which the color value maxes out, at 255. Scaling directly controls distance. In the case here, it's 98,304 CU for the MaxBase value (based on 32,768*3, 32,768 being a power of 2 (it's 2^15)). To offset for the 255 limit, I place more pixels closer together. Because the furthest mountains are so far away and so fogged out, there is practically no point in having the lights on them. Sure they are extremely bright when looking at the closest hills (the foothills of the Sentus Mountains), but, at 64,000 feet (12.12 miles, 19.51 km) away, the lights, if the calculator is any hint, are barely 5% as bright meaning only 5% the contrast. Throw in the very heavy fog as well and that contrast gets cut to only 1/6 of that. White on the darkest green here has a contrast of just "255-17" or 238. The dimming of lights with distance makes this become just 12.08. Add in the fog and that drops to a tiny 2.01. The darkest (offering the greatest contrast difference) has "255-8" or 247 which turns into 12.54 and 2.09 respectively. Place gray shades (128, 128, 128) and (130, 130, 130) next to each other and see how hard it is to see the difference. This is why I completely discarded the cities on the furthest hills. The second-furthest mountains still have the cities quite dim, but the lights are about 2.32 times as bright from distance and contrast increase due to the decrease in fog intensity is 2.72 times as strong. They have, thus, 6.31 times the contrast (at 12.71 for the high end) and thus are present (and quite visible if you look closely enough).

Final Carnivalesta enhancements - designing 2

Date: Mar 29, 2011
Screenshot #134: Taking surprisingly longer than I originally expected, this enhancement went on to its second week. This is that same simulation screenshot as before, only with the latest improvements. The 2 most obvious changes involve the roller coaster tracks and the addition of 2 layers of stands. There is another change though - the city in the far mountains. You can no longer see it from ground level. It takes considerable height to be able to see the city at all, but the abnormally high density of lights in that area hints to something suspicious.

The closest layer of food and barker stands, at a scaling of 1.5, involves 4 new stands. "Asian Gourmet" is a food stand that offers typical Asian foods, including Chinese, among others. "Clown Dunk" is a classic carnival barker stand. You are given 3 balls and, by hitting the target, the one on the diving board suddenly drops and makes a big splash. "Popcorn Mania" is your typical carnival popcorn stand (surprising how I left this out earlier). "Soda Pop City" (one of my favorites) is a place to buy sodas. With the "soda vs pop" debate, I figured I'd combine the 2 in the name. They have a focus on their homemade root beer. "Hi-Flyin' Darts" is a typical barker stand with a twist - throw 3 darts to hit the balloons. That's nothing new. What's different is that, by hitting a balloon in the sky, 1 point is scored. Balloons over land score 2 points. Hitting a city causes the throw to be declared a miss (the throw is always 0).

Skipping the next closest row (at a scaling of 2; it's already covered in an old screenshot), the layer at a scaling of 2.5 is present. "Jumbo Popsicles" is a carnival stand gone extreme. Instead of your typical 2-ounce popsicles (or whatever), they get to 12 ounces for a single one. "Cinnamon rolls" is a food stand that offers cinnamon rolls along with other things that resemble them. "Power House" is a classic carnival barker stand. You are given a hammer and, by hitting a platform of sorts, a slider goes up. With enough strength, the bell is rung, only, the bell is a simple house. "Lava Ladders" is much like the classic carnival barker stand, except it has it a Platform Masters theme to it. You are to climb a ladder that is unstable. It tends to twist often, getting especially bad in the center. Fall, and it's in the lava you go... only, the lava is actually a 1 1/2-foot thick mat. Make it across and you win a big prize. The "not real lava" note is for humor. "Tattoos" is actually a shop (since I've otherwise ran out of ideas and needed fillers to get the 512-pixel repeating width). These tattoos are only the temporary type. "Balloons" is another shop. It is used to buy both regular balloons (helium-filled or regular air) and shaped balloons (like the dogs, cats, mice, hearts, etc. you often see).

The row at 3 is covered in a somewhat old screenshot. There will be another row at 3.5, but that has yet to be created. The row at 4 is covered in the same screenshot as 2.

I haven't gotten to adding any more rides in yet. Once the layer of stands at 3.5 is done, working on the rides is next.

The roller coaster beyond is much different. As explained in the previous screenshot, the roller coaster was to get a darkening fade. Well, the roller coaster now has that, and it exactly mimics what you see in the main levels.

The hotel and ground decals still remain, however. Once all the scenery is completed, there's still importing it all into the game engine and also getting the ground decals system programmed.

Animating scenery - making the frames

Date: Mar 31, 2011
Screenshot #135: Ever wonder how something gets animated? The process is much like how I got started with animation - Excel spreadsheets complete with extensive calculations and making the individual frames. Animating scenery objects is done almost the same way.

Because of limited memory slots (lack of malloc), I have to be careful in limiting the amount of detail I go into. For things like water, sailboats, or the clouds, it's nothing more than constantly shifting the position. For things where the shape itself changes, like carnival rides, that's where this routine comes in and each of these frames uses up a lot of memory. Optimization of this is crucial for keeping memory usage down. For example, what's the point of keeping the passenger loading and unloading parts, the markings indicating the ride's name, etc. when they never change? If they never change, leave them out and just have a static backdrop. This keeps the size of the animation as small as possible so it also uses as little memory as possible.

Each unique animation frame image takes up a lot of memory. However, by reusing animation frames, more detail can be provided for less memory. It's how the "Explorer" ride has over 1000 frames of animation - it only uses 48 unique frames. The High Runner ride is no exception. It, too, will likely use well over 1000 frames of animation, but only 128 frames are unique. Although a 69x16 image is otherwise insignificant, however, when there are 128 frames of animation, that 69x16 begins to rival the memory needed for the largest of hills in Carnivalesta (and these are not animated). The Hero Wheel, for example, may only be 224x232 or so for it's size as you see it (it will get larger, to about 296x304 (that makes it 375 feet (114 1/2 meters) tall), taking only 0.198 MB of memory, but with 12 frames of animation, that turns into 2.379 MB. Reusing the 12 frames of the Hero Wheel allows for it to have 36 or even 72 frames and still not use any more than 2.379 MB of memory.

Some animations are simple to do. Others are complex. For the complex ones, like High Runner, that's where Excel comes in, so I can do these advanced calculations. I then just use the image window as a kind of bookmark or bookreader to quickly scan the data that I need to reference for a particular frame. The screenshot shows this very well. For simple animations, like the Hero Wheel, I don't use Excel. "Explorer" is considered both simple and complex. It's only complex because placing the part that the riders go in involves using sines and cosines to correctly position. The bar is simple as it's nothing more than a rotation, of which GIMP makes easy.

This screenshot shows the second part of the process in action. The first part is setting up the spreadsheet which involves extensive calculations and often complex math. The formula bar gives a good hint as to the complexity involved.... The 4 layers at the very top of the stack are templates, used to hasten the process. The dark seats are much darker than they are intended to be and for one reason - maximizing contrast so positioning is faster and easier (I won't miss as often.).

Can you figure out what kind of ride High Runner is based on? It's a common one I tend to see, two (the same thing, but under different names) for sure and I've seen at least one other variant (same thing, different name) on TV.

You might also be wondering, why is it so small? Easy: distance. It's 800 feet from the camera, 700 feet away from the foreground action. One foot is less than a pixel at this distance. 3 pixels is slightly more than a meter.

Animating scenery - finalizing the frames

Date: Apr 1, 2011
Screenshot #136: Once all the frames are done, they are first checked for correctness. This check is brief and helps catch obvious mistakes and also helps with optimization (such as flagging duplicate frames). The next step is saving the file under another name. This makes it easier to go back to an older frame to make a correction, in case the quick check doesn't work. Spreading out the frames follows. In my case, the frames are spread out on the X axis and cropped based on the image's base width (not the 7797 you see, but the original 69). The frames are ordered in the order they were designed. Duplicate frames are left out, as this screenshot shows (like the "End 24 = Start 08" layer - End 24 (frame 24 of the ending sequence) is exactly the same as that of frame 8 of the starting sequence). The exact frame that is used depends on the timing. The seat colors and the chains are still the older, temporary colors though. This changes in the next step - finalization. Before that, however, another copy of the file is saved. Once the final colors are set, the final, resulting animation is saved. Programming the behavior in the game engine is next. Merely programming it isn't good enough though. That's why testing is the final stage of the process to complete the animated object. If it doesn't work properly, it must get adjusted so that it does work properly.

Animating scenery - forming templates

Date: Apr 2, 2011
Screenshot #137: Some animations are highly repetitive, such as the Hero Wheel. Its theme is based on the RGB color wheel (with white replacing the tertiary colors). This where I set up templates. Templates are where I form a base image with false color for the parts that change and I just duplicate the base image. Once duplicated, I change the colors as needed. However, not all things are just the changing of colors. One of the new changes to the Hero Wheel, aside from a more futuristic look, and the darkening effect, is that it constantly rotates. The speed at which it rotates actually surprised me - half of pi. That's right, it's exactly half of pi, in mph. It has a radius of 270 pixels (2160 CU, since the scaling is 8), and each revolution takes 432 seconds (7.2 minutes). To make getting on more manageable, I had to slow the animation of the Hero Wheel from a quarter second between frames to a half second. Not many can get on a constantly-moving sky wheel at pi mph.

The image at the bottom is the original version of the Hero Wheel. The top is the template of the remake. Notice the zoom and image size for the top image? I'm drawing it at 4x the intended size to improve the precision of the placement of the capsules. This is needed for one reason: over an angle change of just 5/12 of a degree (25 arcminutes), true size just doesn't have enough precision. Going with a larger size also provides antialiasing in the end result, improving the quality of carnival standard.

Final Carnivalesta enhancements - designing 3

Date: Apr 3, 2011
Screenshot #138: With all the rides and stands done, the only things left at this point are the sky glow effect (from the big city), the hotel, and the ground decals. Now about to go into its third week (2 full weeks), Carnivalesta has made some very serious progress. Why am I going through so much effort on Carnivalesta that the other worlds don't get close to? Carnivalesta is a key destination and central to the story. Thus, I want it to have a lot of detail as it makes for a great front-cover image on the box (provided Platform Masters gets published and the eventual box gets on retail store shelves).

The row of stands at 3.5, compared to the last update on this this progress, is new. "Rifle Star" is where a rifle machine gun (fully automatic) fires small pellets at a paper target with a star shape on it. If the star is cut out, the user wins a prize. Recalling from my visit to the State Fair in 2004 and/or 2005 gave me this idea. "Noodle Factory" is a food stand offering several noodle-focused meals like macaroni and cheese, spaghetti, manicotti, and various others. "Fortune Teller" is just that - you reserve a 10-minute time slot to visit with a tarot card reader. This is from my experiences at the Renaissance Festival in September of 2010 (except they had 15-minute time slots and I never visited (too expensive). "BBQ Haven" is a food stand that offers barbequed meals straight from a coal-fire-type barbeque (only a much cleaner form of coal - who knows what 2073 has in store). "Info" is a completely unique one as it's not a food or barker stand, and it's not a shop. It's just a place to get information, such as maps, where a particular product might be, and various other things. I ran out of ideas and had a gap to fill.

As to the rides, I'll go from left to right as usual. The first one is "Haunted House". It's simple cloths on wires with a faint light bulb inside, hidden speakers, and robots for walking skeletons that fill this mansion.

"Spring Bouncer" has collapsed (notice the broken string on the right) and is the only ride that is out of order. Normally, it's kind of like a bungee jump type ride, only further enhanced in a way to give the general public a feel as to what the bounce ability is like.

"High Runner" is basically a clone of the Yo-yo type ride. The ride, after 2 minutes (for loading and unloading), rises. Once at the top, it starts to spin up. Since the seats are suspended by chains, centripetal force causes them to fly outward (I'm actually not sure how to calculate the speed with a given angle - I feel that a tangent is involved.). The ride speeds up then slows back down again repeatedly. After enough repeats, it slows down to a stop then returns to ground level so everyone can get off and new ones can get on.

"Explorer" is much like the 1001 Nacht (Wikipedia name). After a 2-minute wait, the ride starts to accelerate by swinging to the right. It then swings to the left and gains enough momentum to make a full circuit (shorter than normal due to the powerful motors available in 2073). It makes 10 full turns, stops at the top, then makes 10 full turns in the reverse direction. After this, it slows down and comes to a stop.

"Mini Platform Masters" is Platform Masters for the general public. The platforms are only a quarter of the size of the real thing and have limited objects. It would seem that it's only 1/32 scale, but that's because of the distance. There are no springs or enemies, but there are jewels and hearts. There is a ladder, but it's only for getting to where the start platform is. The layout sort of resembles the real thing, only the spacing is off (so that the general public, who can't jump but maybe 2 feet, can get on the platforms and follow the course) and there are no slopes. The start and goal platforms are present though. There is a pool of water below for safety reasons. There are no prizes offered, outside experiencing the platform-hopping that Platform Masters is. The idea came from a very old dream, the best one of them all (of which still holds true as of Apr 3, 2011).

"Mud Battler" is hidden behind the banner (you'll see it in the video). This ride involves 4 users getting into robots that walk in waist deep mud. Users control the robots with one hand and, with the other, scoop up some of the very soft mud and throw it at others, much like a snowball fight. A shield is provided so that users can block others' mud throws. This ride is not animated. The idea came from that same dream that "Mini Platform Masters" came from.

"Hero Wheel" is a sky wheel that gets 338 feet above everything, so high that one can almost seen past the roller coaster and see the cities on the mountains or watch the carnival grounds far below. Further details are in screenshot 137 directly above. This, however, is the final design of the Hero Wheel. It looks as if the capsules are suspended in mid-air. They're not as there's a hard-to-see globe around them.

Once the hotel, sky glow effect, and ground decals are done, along with all necessary programming, I can finally see the end result in its full glory and I've been eager to see the final results for over a week at this point.

Final Carnivalesta enhancements - testing 1

Date: Apr 6, 2011
Screenshot #139: With everything done, importing all 39 layers of scenery into the game engine follows. Shortly after doing this, and fixing any compilation errors (like missing parentheses or semicolons), I finally got to see the end result. I was amazed as to the level of detail I went into. High Runner wasn't animated (it's rather complicated, with 1585 total frames (!; only 113 unique ones are used))), and the ground decals weren't added. Although the roller coaster tracks have been added, I made them invisible in this screenshot.

Why did I make the tracks invisible? It's so I can correctly position the hotel and lights in front much more easily. I had to make sure they lined up. Initially, they actually weren't lined up. The cause was forgetting to account for centering that the light poles use (causing the flags near the hotel to be out of alignment with the rest of the flags, offset half the repeating width). The hotel was off as I forgot about the yellow rod near the hotel (a security measure; I don't know what these are actually called but they're buried deep into the ground and have a lot of mass, for stopping out of control cars)). This screenshot shows everything after all the aligning was fixed and before the ground decal system was added.

Final Carnivalesta enhancements - testing 2

Date: Apr 6, 2011
Screenshot #140: Now the ground decal system is otherwise done, minus a minor bug and more than one case to test, the scenery only got better. Yep, the lighting is indeed accurate (outside "overflow"). If you look closely, you can easily detect the circular shape of the lights near the hotel, even angles created due to the lights (look to the right of the hotel for the best results). Ground decals use the exact same system as that of the clouds. There are a few differences though. Compare the results of this lighting via ground decals over that of even the 24-channel ground. With the 24-channel ground system, there were only 6 channels available dedicated to this. The ground decals system has not 6, but 192.

What's with the odd green spot near the pavement? It's a class 1 bug, one that I've been stumped over for quite a while. At the time of this screenshot, I have 2 main clues to go on. I know that it seems to only happen when the camera's Y position is a multiple of 32 (after fractional parts are dropped). The second is that, when it does happen, I see that it's drawing row 188 instead of 191 like it should be. Bugs like this are generally low priority, but I focus on cleaning up every bug I can find.

Also, if you zoom in on this image and look at the boundary where the pavement is, you'll see a jagged edge. If you recall from when I was working on world 11 and figuring out how to do the track's ties (before I changed the train to being a maglev), I mentioned of the ground decal system having this jagged edge when it came to abrupt edges. The clouds, too, have this, but it cannot be seen due to the lack of contrast. Here, the contrast is 23. It's still fairly low, but it's much easier to see than just 1 or 2.