After over 3 years in experimental development, the first public release of the C++ code is HERE! (last release updated: May 5, 2023)
- 7 Realms
- 7 Ancient Secrets
- 7 Pathways
- 7 Heroes
Discover the Power of the 7!
Manifest the Power. Spread the Magic. Live the Dream.A little history...
This manifestation of the dream began in December of 2019. Or at least, that was when the geometry became clear enough to start writing code.
On the holiday of Bubastis, a vision coalesced. From here, the path forward opened with each line of code: C++ classes to build the geometry from the vision into manifestation, piece by piece.
A series of experiments in the code...
The Geometry: Hex Spiral Coordinate System
On a hex grid, the spiral begins at any given center, with coordinate #0. From this center, the spiral grows outward, incrementing the coordinate with each step, spiraling out into theoretical infinity.
Within each hex of the spiral, enlarged to another order of magnitude, another hex grid is envisioned. Inside each space, seven smaller hexes can fit with orientation inverted (edges aligned on the vertical axis vs horizontal).
At 3 orders of magnitude inward, another spiral is formed. 7 within 7 within 7. Each space on the larger outer spiral can contain another "spiral within a spiral", which can be zoomed in to see a geometrically greater level of detail. This process could theoretically recurse into infinitely smaller spirals at greater levels of detail.
This project demonstration is designed to iterate 4 levels deep into sub-spirals, allowing navigation between levels through the realms, along with a bit of custom code to handle other variations of behavior unique to each view level. (The structure continues to evolve and be refined with development.)
At the highest level, 7 Realms exist within the world.
Within each Realm, there are 7 Regions.
Within each Region, there are 547 Zones. (547 = number of inverted hexagons that fit into 1 hexagon at 3 orders of magnitude difference, a radius of 13 from the center.)
Within each Zone, there are 547 Scenes.
Within each Scene, 547 Spaces. The Spaces within each scene form the smallest unit of discrete measurement defined within the world.
The Diamond-Triangle-Hex pattern
Based on the principles of the Diamond-square algorithm, a pattern for deriving elevation was designed, albeit with more steps and special exceptions to populate a map consisting of hex spiral grids....
Concept. Idea. Project.
December 5, 2002
On this third Bubastis since the project began, it is still barely even just getting started! And yet, so much time and energy has gone into the creation of this hodge podge pile of C++ classes already, just as a beginning, though unfinished and largely undocumented, after 3 years, it is time to let the code fly free! This is but a proof of the basic geometry through experimental implementation. Many more ideas are planned.
So without further delay, here it is...
Latest Release: May 20, 2023. Download the code. Most recent addition: cross-dimensional scene subscope auto-updating over zone/region views.
Previous releases:
- May 5, 2023: character group object features (always highly experimental) available here.
- Dec 23 2022: initial code release
The code is is generally designed to be cross platform, running on open source libraries. I use the Codeblocks IDE for development, so a 7thPower.cbp project file has been included with this initial experimental release. With the help of the cbp2make tool, I also generated a more generic Makefile, which is included, so anyone who wants to complile it without using the Codeblocks IDE should be able to do so. You may need to tweak the locations of dependency libraries (LunaSVG and SDL2_gfx, linked below) to work on your system.
7thPower code is released under GPL, version 2.
Dependencies
These libraries are required for the code to compile:
Documentation, brief
Keyboard navigation:
- Numeric keypad 1, 3, 7, 9: navigate diagonally, all view levels
- Numeric keypad 2, 4, 6, 8: up down left right, when applicable to current view level
- Numeric keypad + : Zoom in to a closer view level
- Numeric keypad - : Zoom out to farther view level
- Numeric keypad 5 (center): toggle camera follows auto-cursor
- PageDown/PageUp: Increase/decrease base hex radius
- "M": activate elevation map
Ways to trigger interesting state changes (unplanned but exlainable behavior; not bugs, but happy accidents!)...
Try hitting + / - in rapid succession, especially if moving from view level 2, can trigger the different view planes to zoom in opposite directions by sending the first press event to one view plane, and the second to another before it has reached its target level, depending on the order and timing of the key presses.
Using PageUp/PageDown to change the base radius size, before and/or after using "M" to activate the map display. Will cause wacky gaps and/or clipping of the hex map portions, due to the way the texture buffers are not setup to resize even when the base radius changes. Again, it's not a bug, but a happy accident in the art! (Although the behavior may potentially be changed in future releases.)
To lock in a movement direction on a given view level, hold down one of the directional keypad numbers, and then while holding that pushing + or - to zoom in/out. If keypad direction key is held until after the zoom finishes, the corresponding "key up" event will be sent to the new object instead when the key is released. Zooming back to the previous level, movement will continue until the same key is pressed (and released) again.
Sources of Inspiration
Xtra special thanks to...
- OAO temple, whose support through the pandemic made this project possible
- Everyone at U of M
- Friends and family all around