screenshot smorgasbord, elevators
Slowly but surely, scriptable objects (like elevators) are being incorporated into the engine.
Here are some new screens, reflecting changes in lighting and modeling. Also, the new elevator shaft rooms are visible.
(Wolfgang discovered the ceiling pillars that go on forever.)
In: Uncategorized · Tagged with: elevators, environment, exploration, gallery, images, lighting, Megastrata, procedural content generation, screenshots, scriptable, shafts
Technical: Depth buffer in OpenGL
I just thought I’d post this up here, in case other people had the same problem.
The Megastrata project started out like any other first-time project: cobbled together from examples found on the internet. One of the long-standing traditions regarding development involve the so-called “hack-n-slash” technique: smash the code around until it works.
Megastrata started life out as the NoiseViewer, which was, true to its name, simply a 2D noise patter viewer. Hence, there was originally no need for a depth buffer.
When the leap was made to 3D, I made it work on Windows. But the OS X version didn’t render the same way. Wolfgang put a lot of effort into debugging it, and after sending screenshots back and forth, we understood that the problem was with the depth buffer.
I saw something suspicious when I looked up the OpenGL FAQ on the subject. Step one reads:
1. Ask for a depth buffer when you create your window.
Evidently, Windows automatically specifies a depth buffer created when initializing the window, whereas OS X does not do this by default.
We changed the line in the code that read:
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
to:
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
and the problem was solved.
In: Uncategorized · Tagged with: buffer, culling, depth, depth buffer, glutInitDisplayMode, opengl, OS X, rendering, troubleshooting, windows, z-buffer
Collisions and Cosmetics – v1.87
Version 1.87 released: as usual, to be found on the information page.
Major changes in this version include a newer, less degenerate collision engine. The player now collides with surfaces, instead being manually bound to a certain volume.
Also, steps have been taken towards making the corridors more visually interesting. This means adding chamfering to some corners, and variable heights to the corridors. (Suggestion in part by @zdanielz.)
In: Uncategorized · Tagged with: architecture, collisions, cosmetics, exploring, Megastrata, procedural content generation, screenshots
Version 1.86 Released, corridor-enabled
Collisions are coming together, even if they are simplistic. This means we can now explore an infinitely-generated space, full of corridors and rooms. The latest version has been uploaded, the very same one from the teaser vid.
Please note that there are disabled stubs for working with ffmpeg, but I decided it was far too bulky to add to the project. I only used it for a few export clips, for the teaser.
Also, as Wolfgang points out, the Mac version does not look the same as the Windows version (most of the walls are transparent). This is evidently because of some nonstandard usage of OpenGL that Windows is willing to forgive. Any thoughts or suggestions on how this might be solved would be quite welcome.
Regardless, the project is moving forward, and new and exciting features are coming. Stay tuned.
In: Uncategorized · Tagged with: code, collisions, corridors, interior, Megastrata, noiseviewer, procedural content generation
Megastrata teaser video
Despite the patina of silence, the NoiseViewer project has been progressing in leaps and bounds these past few weeks. The internal modeling has begun to take shape, and it is actually possible to start exploring a few of these endless corridors.
The name has gradually started becoming “Megastrata”, as it morphs away from being an experiment, and starts getting more serious.
Here is a short teaser video:
A new build will be prepared soon, and we’ll continue the unending task of bringing this impossible structure to life.
In: Uncategorized · Tagged with: Megastrata, noiseviewer, preview, procedural content generation, showcase, teaser, video, youtube
Concept and design – a patchwork approach
In lieu of proper concept artwork or mock designs for a potential finished project, putting together photos discovered on Flickr has become a windfall of concept design.
Using Flickr’s new Gallery feature, I have put together a few megastructure explorations. These are built from other users’ photos, but represent a larger structure that crosses space and time to become the Megastructure we seek.
So far, there are three such explorations:
The feelings I get while going through these photos in their particular order is the same emotion the Megastrata simulation should give.
In: Uncategorized · Tagged with: architecture, concept, design, flickr, found artwork, game, Megastrata, megastructure, noiseviewer
Junctions and Overhauls [version 1.84]
The NoiseViewer has come a long way since its inception some months ago, but there is still much to do. The code is about to undergo another radical reconfiguration, this time extracting ourselves from the original 2d-oriented architecture, and cementing the World object as master over 3D entities.
The “ConnectingBoxes” layer has been retired, having been superseded by the JunctionBoxes layer. This is by no means a completed structure, but we are certainly getting closer:

Head on down to the NoiseViewer information page to grab the latest version.
In: Uncategorized · Tagged with: 1.84, architecture, boxes, code, connectivity, disjoint sets, noiseviewer, procedural content generation, redesign, structure
dev twitter account
Follow up-to-date tweets on the development of the NoiseViewer and other Megastructure projects on Twitter with @megastrata.
In: Uncategorized · Tagged with: dev, Megastrata, meta, noiseviewer, site news, twitter
Disjoint sets and connectivity (version 1.83)
This version of the NoiseViewer provides a new layer type: ConnectingBoxes. Connecting boxes build a rudimentary network of paths throughout the visible render window. It does this by taking advantage of a data structure called Disjoint Sets, using the Union and Find algorithms. Cells try to be connected as much as they can, and paths tend to form only when needed. This behavior will surely change in future versions, but it is a nice start.
The XML format has been broken again (that is, will not read XML files generated by older versions), and will probably be broken again soon.

Note the “Reload defaults” button – it loads the screen you see here.
The new version is available on the download page, in Windows and OS X binaries, and source code distribution.
In: Uncategorized · Tagged with: algorithms, boxes, connectivity, disjoint sets, noiseviewer, procedural content generation, pseudorandom, union-find
NoiseViewer Version 1.8: leaping to the third dimension
The NoiseViewer has been improved once again. Today’s version brings 3D pattern generation capability. Albeit a simple implementation, but nonetheless a start.
Building in 3D is available by choosing the “Boxes” layer type, and clicking “Change base”. (Boxes are not available as a sub-layer.) Here is a screenshot of the boxes in action. Here, their widths are controlled by an underlying Noise layer:

And here, we see noise driving two variables: width and height. This demonstrates how future layers will have a multitude of variables, each allowing a plug-in style approach to building complex patterns.

This version has also been built in Release mode for the first time (Windows). Among other things, performance gains a significant boost.
A great deal of code has been refactored, including the XML writer/reader. Please note that older XML files will not load in this version.
In order to download this latest version, see the information and download page.
In: Uncategorized · Tagged with: 1.8, 3d, boxes, noise, noiseviewer, procedural content generation











