New Coding Paradigms

So I’ve recently been thinking that the whole idea of editing text files filled with code is outmoded. When I’m thinking about code, I certainly don’t think of it as a set of classes and functions laid out in a particular order. I think of it as a cloud of entities with properties and interactions flowing between them. Shouldn’t our experience of writing code reflect this?

We need to start rethinking our code-editing tools. A lot. Here is a simple example:
XML heatmaps

What else could we do? How about the ability to arbitrarily break off chunks of code and view them in parallel, even nesting this behavior to break long blocks of code into a string of chunks:
Nesting chunks

What if we let the flow of the documentation decide how a reader is introduced to the code base, instead of letting the flow of compiler-friendly source files decide it? Chunks of code are embedded within wiki-style documentation, and while you can follow the code back to its source, reading the documentation will eventually introduce you to the whole codebase in a human-friendly fashion.

The same code could even appear in multiple places (obviously updated when the source changes), and you could see all the places in the documentation where a particular chunk of code appears. This could bridge the gap between documentation and code; documentation will never grow stale, as updating code necessitates interaction with it. Similarly, updating documentation is the same process as writing code. When a standard changes or an SLA (service level agreement) is modified, the code changes too.

But why restrict ourselves to semi-linear, text-based documentation a la wikis? We tend to find UML diagrams extremely helpful for visualizing complex systems in code. What if we could build powerful, adaptable tools to translate between raw code, text-based documentation, and visual diagrams? Strictly binding them together might restrict you in the lowest levels of coding (much like, for example, using a high-level language restricts your ability to control memory allocation), but it opens up the new ability to make changes to a diagram and have most of the code rearrange and resolve itself before you. Then you step in to give a guiding hand, and adjust the text documentation, and voila! Best of all, this is more than a diagram-to-code tool; the diagram is a living thing. In fact, the diagrams, the documentation, and the codebase are synonymous. A change in one is a change in the others.

We’re getting to the point where it is much more useful to be able to dance across a codebase quickly than to be able to tweak and tune the minutiae of your code. Some allowances must be made for processing-intensive applications. Perhaps this system wouldn’t even be useful in those cases. But when you find yourself favoring adaptability and iteration speed over efficiency during development, and when you find yourself being hampered by the need to go between files, scroll through large swathes of code, or referring back and forth between code and documentation, maybe it’s time to rethink your coding paradigms.

Mass Paradigm

One of the most interesting things to think about with respect to the near-future of space travel is the removal of limited mass as a paradigm. That is to say, right now the predominate design constraint for spacecraft is mass, because rockets are very expensive, so each kilogram of payload must be put to best use. Unfortunately, this means that the design and construction costs for spacecraft are very high, as much effort is put towards shaving off grams by using exotic materials and efficient designs.

But soon the current launch vehicle renaissance will result in launch costs low enough to demolish the limited-mass paradigm. There is a tipping point where it is economical to cut design costs and take the hit on launch costs. There will also see a growing emphasis on tough and reliable systems that last a long time, rather than fragile, light, efficient systems. Combined with lower fuel costs from asteroid mining and improved refueling technologies, the predominant modus operandi will be repairing spacecraft rather than replacing spacecraft. Designing for reusability and, more importantly, refurbishment will be critical.

We’re already seeing a shift towards this paradigm with SpaceX. Their launch vehicles use redundant systems to make up for their cheaper designs — their avionics electronics, for example, are not rad-hardened but instead redundant in triplicate. The mass penalty is minimal, however they also make up for it by using modern electronics concepts. For instance, instead of running numerous copper wires up and down the length of their rockets, they run a single ethernet cable and use a lot of multiplexing.

This kind of change is just the beginning, however. There will be a time when it makes sense to loft a big bundle of steel rods into orbit and have workers weld them into a frame for a spaceship. This has a number of benefits: the frame doesn’t have to be fit into a fairing, it can be reconfigured on the fly, and it doesn’t have to endure the acceleration and acoustic stresses of launch. Additionally, lifting big bundles of steel makes best use of the volume in a launch vehicle fairing.

I think the only two questions about the future of space travel are: How much will it be dominated by robots? and Where will the money come from? But those are questions for another time.

Burn

I’ve been aiming to make a post about this for a while. Here is one preliminary design document I made a while ago. It calls for something similar to the situation described in A Deepness in the Sky.

Game Beginning

You start out as a young man, fleeing a vicious civilization collapse. As the member of a wealthy Qeng Ho family and son of a fleet leader, you are in charge of the only ship that escaped. You are powered down in orbit of a gas giant, watching the aftermath of the Fall. A lot of your archives have been corrupted, so you need to find some other traders or find a world to raise up.

The very first thing you do is name your family branch. Then you figure out how to take inventory of your ship systems, and how to scan surrounding space. You learn about light-lag. You have just enough fuel to get up to operating velocity. You can choose a target system.

Your aim is to become the leader of the Qeng Ho. This is not an easy feat; the Qeng Ho is a diffuse trading race, with no clear organizational hierarchy. There are several trading “families”, each with large offshoot branches (e.g. Vinh 2.0.3). The objective is to gain enough influence, and then call a meeting of the Qeng Ho. At this meeting you either convince all the families to follow you, or perform a hostile takeover.

You have as many years as are in your life to do this. Note that if you meet a civilization with hyper-advanced medical technology, this means a time bonus. You do have cryo-freeze for the time in transit between stars.

Personal Mechanics

Throughout the game there are personalities on your ship and on other ships that you can talk with. What you say affects what they think of you. If they hear bad things about you from others, they will enter into relations with poor expectations. Reputation influences the trades you can get, as well as favors you can ask.

If you gain a high enough reputation and interact enough with a person, you may become friends. You are not notified whether or not they consider you a friend until you bring it up. Friends will vouch for you or join in on a plan. Friends are much more likely to answer a distress signal you put out.

Traders that are well known often have available profiles. When you trade for someone’s profile, you can see their reputation with others, their personality, and most of their history. By gaining enough reputation with a person, you can find out what they think of other people.

Interstellar Travel Mechanics

A Bussard ramjet is used to travel quickly between star systems. A ramjet can only go so far before the mechanism breaks down. A ramjet needs to move at a certain fraction of the speed of light in order to scoop up enough fuel to continue operating. While flying above that threshold, your fuel tanks fill up. When decelerating, accelerating, or maneuvering, you burn fuel without regaining any. It is only possible to accelerate up to 30% the speed of light; a lot of energy is spent accelerating floating interstellar hydrogen up to your speed.

Ramjet engines can not be repaired on the fly. In order to fully repair an engine, you need to trade with a civilization that has the requisite technological level. This means that you may have to raise a civilization to high-tech in order to continue flying.

If your engine breaks down mid-flight, you will very slowly lose speed (from colliding with interstellar particles), and continue to drift until you either exit the galaxy, crash into a star, or are picked up.

Note that different regions of space have different interstellar medium densities. For instance, our local cluster lies inside a relatively sparse region, making ramjets less feasible. One aspect of choosing a destination in the game is navigating around low-density “bubbles”.

Choosing your target is important. Since you can only hear transmissions from the past, you have to judge whether or not a civilization will be as advanced as you want it to be when you arrive. Flying to a system that is at a peak level of technological advancement will probably have collapsed by the time your fleet arrives. This just means you have to spend time (although you have cryogenics, you still usually come out of it every so many months to make sure the fleet is still on track) helping them get back up to a sufficient level to repair your fleet.

Trading Mechanics

Planetary civilizations rarely want materials. They can mine almost everything they need from their system, and the price of lugging raw materials across interstellar space is too high for you. The exception is high-tech equipment. Civilizations will pay dearly for technology that they either cannot physically manufacture (as with Beyond relics) or are nowhere near the technological sophistication needed to synthesize the tech.

Civilizations value information more than anything. A faction will pay a grand sum for anything that will let them dominate their opponents. Advanced secrets help advanced civilizations keep their expanding infrastructure under control. Usually you can broadcast such information ahead of you, as long as its encrypted. This gives the civilization warning that you are coming, and when you get there you can trade away the keys needed to decrypt the information (on this note, the Qeng Ho constantly broadcast a certain amount of information for free to make sure that civilizations they meet have similar measurement standards, language, etc.).

Conversely, traders have a huge store of knowledge, but lack the infrastructure or resources to maintain themselves. Spacefleets will often bargain limited pieces of technology in order to buy volatiles, fuel, and new equipment. Sometimes civilizations will provide these for free to weasel better deals from you.

Occasionally a civilization will become exceedingly advanced in one area of technology. They will invent something truly revolutionary. If you get your hands on one of these pieces of technology, you will have leverage over all other Traders. You may have to bargain hard to wrest the technology from the civilization at hand.

Combat Mechanics

Be warned. Consistent use of weapons will cause other traders to shun you and make civilizations bar you from their systems. Someone might even try to hunt you down if you destroy their civilization but leave even part of a defense fleet.

Space combat is a fickle subject to approach. It is best summed up by these two pages on Atomic Rockets, although every page there provides good insight.

Interplanetary Flight

This will probably be some sort of simplified KSP-like interface. That is, you initiate maneuvers to change orbit. The problem here is balancing technical details against flexibility and realism. Optimally, players should be able to identify their desire to conserve fuel against time constraints, and let the computer select the best orbital maneuvers to transfer between planets, space stations, Lagrange point colonies, etc. However, because players may want to do wonky things in orbit during a battle sequence (establish oblique orbits, do hard burns, etc.)

I guess you could distinguish between normal navigation and battles. Battles would probably happen around one central body, unless there was a moon involved. However, battles would probably happen really fast (over in minutes) or really slow (taking months).


And that’s as far as I got in describing it.

Sim State

I’ve been meaning to write this post for a while. This idea really started when I watched Day[9] play the new Sim City, and then picked up Sim City 4 again. I wanted to create a game which brought the ideas of micromanaging infrastructure and government into a larger scale. The player would be able to control education, government type, military, trade, etc. Eventually it grew into a sort of “third-world country simulator”, since that seemed like the most interesting route to people I pitched the general concept to.

The basic premise is that you are the leader of a small country, recently put in power by a violent revolution. This country is located in a faux South or Central America, but there is also the possibility for having multiple templates: African, Southeast Asian, etc. The player can only really see the small land area he controls, plus some of the bordering sovereignties. There is no global map (and this isn’t a game about conquest), but there are references to current global institutions (or fictitious characterizations thereof) like the UN and US, or WHO, etc.

Winning the game means pulling your country out of poverty and onto the world stage. This requires many parts, including building infrastructure, establishing governmental rule, and appeasing the international community. However, the win condition is gaining control over every province in your nation. Control just means being the dominant power faction. Routes to control include stamping out resistance (militarily) and appeasing interest groups. Thus a large part of the game is balancing political control; keep the military leaders on your side, stop workers from striking, and stay elected. The last one may mean establishing a dictatorship, rigging elections, or spending a lot of resources maintaining public image.

At the start of the game, your country is poor and unequipped. There are two forms of currency: money, and international repute. International repute can be spent on relief or treaties; perhaps getting a foreign oil company to leave your country. On the other hand, if you drive out the oil company by force, some factions in your own country may approve, while the international community may impose sanctions. Similarly, if their are pirate along the coast, you could demand tribute or try to exterminate them at a potentially great cost. If the world catches wind that you are allowing pirates to operate, however, you will lose repute.

The other form of currency is money. A little macro-economics comes into play here, since you have to manage your currency (printing money), and real “world dollars”. Rapid inflation can be bad for your industries, but it attracts tourists (but only to good parts – nobody is going to visit the region controlled by drug cartels). Real dollars come from exports, mainly. One way to get a boost in the beginning of the game is to exploit your natural resources: cut down rain forests, strip mine mountains, etc. However, you have to establish a more mature manufacturing industry at some point, otherwise you will exhaust your resources and fall back down into poverty.

In terms of infrastructure the player has to build, the main forms are education and industry. Industry includes transportation networks and resource collection, as well as processing. Industry also means municipal improvements, since nice cities attract high-tech corporations and commercial companies. Another route to improving the quality of your workforce, reducing crime, and eliminating overpopulation is education. Building schools takes a lot of resources for little immediate payoff, but it will start to improve your country greatly. It is also a great way for dictators to indoctrinate the population.

Late-game opportunities may include hosting Olympic Games or researching nuclear technology.

As you can see, there is a lot of room for expansions; this is more of a framework for a game, rather than a fleshed out game idea. I know there are games like this, such as Tropico. I think this would be more political and deep than Tropico, but obviously I would aim to offer a different experience overall were I to build this.

Using Games to Educate

In the last few years we’ve seen the Internet playing a larger and larger role in education. Everyone seems to expect a revolution in education within 20 years. It’s possible, although I don’t think it will come from the direction that everyone thinks it will (see my post on online education). I want to give my two cents about an ancillary approach: videogames. Games don’t have to teach the students anything. In fact, I think they are much more useful as vehicles for the education. Games provide a background, a context, for new knowledge. For example, playing Deus Ex: Human Revolution (play chapters of a game as homework instead of reading chapters of a book?) could help spark discussion about the current situation of computers, implants, artificial intelligence, politics, etc. The experiences within the game outside of the lesson help students stay interested and apply the knowledge, even if subconsciously, beyond the classroom.

I’m going to focus on two games: Kerbal Space Program and Minecraft. Prmrytchr has a whole blog on using Minecraft (as well as other games) in the classroom, so I’m going to focus on the technical aspects.

the KSP splash

Kerbal Space Program (KSP) is an indie game currently under development with an open alpha available for purchase. In the game, you run the space agency of a particularly derpy alien race in their Sol-like system. In sandbox mode, you can throw together rockets, probes, rovers, space stations, planes, and planetary bases from a wide assortment of parts. Then you launch your constructions and control them to the best of your abilities.

KSP Screenshot KSP Screenshot 2

While hard to grasp at first, the game is incredibly fun. You do need a rudimentary understanding of kinematics to play well. This is the first step in its ability to act as an educational tool. While you can strap an engine onto a fuel tank and try to fly it, you quickly realize that doing anything impressive — such as putting an object in orbit — requires a bit of education. While you could watch tutorials, you could also get a lesson about basic kinematics and orbital mechanics from a present teacher. There’s an opportunity for lessons on engineering, as well.

As students become more proficient, more complex opportunities open up to them. Orbital rendezvous and gravitational slingshots get more involved physically. Spacecraft design, between mass conservation, fuel-mass ratio, reaction thruster placement, and properties of engines, is a great opportunity for springboarding into other physics. Other elements of spacecraft design that aren’t simulated in KSP, such as heat management, enter the realm of thermodynamics. Ancillary topics that arise when discussing space exploration can involve relativity and electromagnetic waves.

minecraft splashMinecraft, on the other hand, is about as physically unrealistic as you can get. However, it provides an awesome way to teach logic and economics. Even vanilla Minecraft has a growing arsenal of parts which allow rudimentary (or not so rudimentary) automation. Redstone is a powerful tool for doing any sort of logical manipulation — or teaching it. Watching your toolbox of gates and mechanisms grow out of a few basic ground rules is amazing. Creative minds are pushed to imagining new ways of using redstone, pistons, minecarts, and all the other machines being added in. While I’m not a fan, mods like Technic or Tekkit expand the array of basic parts at your disposal.

Multiplayer in Minecraft is an interesting case study of economic theory. Because the system varies so much from the real world, it provides an outside perspective on traditional economic theory. As you teach the basics of microeconomics, you can analyze why Minecraft’s multiplayer economy and identify how to restrict it. The ultimate goal of the class could be to establish a working economic system on a Minecraft server (perhaps through plugins/mods?).

Redstone Schematic Redstone Screenshot

Whether or not any of these are good ideas, it illuminates how games don’t have to be the primary vehicle of learning to be a useful educational tool. Games can merely be a springboard, a point of reference from which lessons emerge. The game keeps the students interested and grounded in the topic, while providing a useful outlet and vector of fortification for the knowledge they are getting in class.

A Solution for Difficulty Curves and Power Creep

Most games portray you as a hero of some sort. A common trope is for the hero to be either inexperienced at the beginning of the game, or lack his equipment. This gives a reason for why the hero does not just plow right up to the main baddie and kill him at the beginning. In any case, a lot of games suffer from a strangely shaped difficulty curve. The game starts out fairly easy as the player learns the ropes, then the enemies get harder. Finally, you max out your stats and the game begins to get easier again.

Granted, the best games suffer from this less, but a lot of games have trouble with this type of power creep. Spore is a prime example of a ridiculously easy endgame (the space stage was essentially a sandbox). Some developers solve this by making enemies more powerful as the player progresses. This can work in games where, for instance, the enemy starts to realize just how much of a threat you are. In open-world games like Skyrim, though, this makes little sense.

Yahtzee, of Zero Punctuation, mentioned in one of his Extra Punctuation an inkling of an idea for a game that is designed with this problem in mind. I have taken the liberty of gripping the nebulous concept by the horns and fleshing it out.

The game is based around the power suit you wear. It is a magnificent piece of High Technology. Unfortunately, this means that nobody is quite sure how it works. The machining of the piece is much too fine to replicate, in any case, which means any replacement parts have to come from other pieces of High Technology, which are few and far between.

At the start of the game you escape from the main fortress of the Bad Guys with some sort of Valuable Item (perhaps information). You raid the armory and steal the suit before plunging yourself deep into the wilderness around the citadel. You spend the game running from a cadre of pursuers, trying to make your way to the border. At every encounter with an enemy, it is up to you to protect your suit as much. Each blow is physically simulated and, depending on where you place armor, where the hit was, how hard it was, etc. a component on your suit has the potential of breaking. Parts also wear down over time.

The most critical part of the game is deciding how to keep your suit in working order. Some systems are critical, like the pneumatics that let you move (damage to arm parts may impair aiming speed, damage to legs may reduce speed or jump height, etc), and some are dispensable, like weapons. If a critical system receives a hit and becomes in critical danger of breaking down, you have to stop and either fix it with any spare parts you find, or scrap a non-critical system on your suit to get the essential parts.

This meta-game with the suit solves the problem of power creep. You are at maximum power at the beginning, but enemies are also at the greatest density. Slogging through the wilderness and fighting enemies wears your suit down, so by the end you are barely limping along. As time goes on, you have to choose which weapon or system to scrap for parts. This means that you get a sample of all abilities at the beginning, and can keep the ones that best suit your play style. One of Bioshock’s biggest problems was that there was no incentive to try new plasmids. I’m sure the majority of players just improved the starting set, because buying new powers was too much of a liability.

I like the idea of having the game being mostly free-world. You can choose the best path through the different types of terrain to avoid encounters. Cold environments, wet environments, and sandy environments all have different types of wear and tear on the suit. Roads are easy to traverse (meaning less food consumption and lower likelihood of suit failure) but are more likely to find troops on them. Towns and other population centers are more likely to hold supplies (food and maintenance items are critical for survival) and spare parts, but the citizens will raise the alarm if they see you, and there are likely to be troops in towns.

The catch is that any alarms you raise will alert the search parties to your general presence and means a higher chance of encountering troops. Same goes for any military engagements in which an enemy scout or survivor escapes. The game is part stealth (avoiding conflict), part tactics(managing the suit, choosing your world route), part combat (winning conflicts you get into). At the end, instead of a boss fight, you have a final battle at the border of the kingdom as the search parties converge on your position and a friendly militia comes down from the other side of the border to help you across.

Kami

My brother and I have had this long standing idea between us. It is sort of a nebulous concept we talk about sometime. Its an amalgamation of games and ideas, a number of concepts which might be cool is put together in the correct fashion and executed well. We call it Kami, which is the Japanese word for “life force”.

At the most basic level, Kami is a MMORPG. The best way to describe it is to compare it to Pokemon. The key difference is that (other than being a MMORPG) you don’t order around animals; you are the animals. Your character is a spirit which can inhabit various animals. Instead of leveling up certain animals (although you can store the wild animals while you aren’t using them, which can improve usage by taming), you level up your control of an animal type. While on a hunt you could possess any of the surrounding unpossessed animals (the one you currently control becomes feral). You can also learn to reside within multiple animals, allowing you to trade off between animal types in battle and have a set of other animals support you. It also introduced the possibility of hybrids, such as a spine-thrower atop a flying animal. If your animal dies, you choose another animal to jump to, or if none are available you can resurrect at the nearest nature shrine.

Kami also has a second half though. A large aspect of the game is based in clans and guilds. Like in EVE Online, clans can own property and build up power. On the fringes of the world map you can battle a clan for control of land plots (a plot might be 15-30 acres). When in control of a plot, clans can exploit any resources and build a varietly of buildings. Some sort of fortifiation is generally wanted, however, because if a vicious clan challenges you, you better be ready to defend. Attackers enter your land from the main road. Your plot becomes instanced, meaning nobody can leave or enter during the battle and the entire plot reverts back to normal if you defend successfully (minus one time traps, etc.) to deter greifing. Each plot has finite resources, however, meaning that the most money lies on the edge of explored space. To make sure more area was always available, new regions made with guided procedural generation would be added regularly through updates. Previously impassable terrain would be removed through natural or NPC activity such as building a bridge over a river, clearing a rockslide, or revealing a new cave.

Constructing buildings on your plot would not be a trivial matter. Materials would first need to be accrued, either by harvesting resources on site or by importing. In the case of materials like stone, large quantities can be expensive and hard to transport. After you have the necessary materials, you need to select both a building site (there are numerous of these “sockets” in every plot, each allowing a different selection of building types) and a building type. From the initial barebones hub, you can add on modules; a barracks probably needs a kitchen and feral pen, while a lodge needs a bar, kitchen, and fireplaces. Once, you know what basic building type you want, you still need it built. You can either hire or assemble a custom construction crew (usually a specialized hybrid of animals). These are controlled by NPCs and build the building over a number of days. They work continuously, and depending on the hired team they may deduct continuously, up front, or after its done. Castles would take a long time and be very expensive. However, it would resist most normal attacks; only climbers, fliers, or siege animals could get past stone walls.

They regular map and game would be like any MMORPG, with quests and towns, etc. You can still make money through business ventures as well as through item sales. Shops could be bought up for instance, and would run continuously and then deliver your profits on login. You wouldn’t be able to found towns, but you could take up residence. General player consensus could drive world-wide events, such as if the majority of residents in a town wanted to declare war against a neighboring town. New quests would be available and the game world would reflect the ongoing war. The world would be essentially player-driven. Not everything would be available, though. Players who want to get into intense politics are encouraged to journey out and join a clan.

Animals would be both specialized and general. While there would be different types of attack classes (e.g. versatile melee, spine-thrower, agile, tank, flying, pack), there would also be pack animals, explorers, messengers, and shopkeepers (tentacled, perhaps?). Construction workers would have very specialized forms, like a quarry beast with a giant saw-blade tail and arms capable of lifting solid stone blocks. Beaver-style animals could be lumberjacks, and a tunneling worm/thing could be a miner. Some animals might work as a pack, sort of like the Tines in aFuTD. Such animals could fulfill roles requiring dexterity, like certain roles in construction or the making of tools.

The game is always changing; it just a fun thing to think about. Right now it appears to be a greatly player-driven MMORPG that’s a cross between EVE Online and Pokemon, with intense politics and economics but also crazy interesting animals/creatures.

Interstellar Travel

The most important part of writing science fiction is laying down a set of rules which stays constant throughout the book. In A Fire Upon the Deep (aFUtD), there was hyperwave, anti-gravity, hyperspace, and the Zones. In The Mote in God’s Eye (tMiGE), there were only two pieces of technology which violated physics: the Alderson Drive and Langston Field. Each was defined very clearly. Nothing is more infuriating than when an author saves the day with a previously undisplayed loophole.

Cover of A Fire Upon the Deep

The interesting thing about tMiGE is the interstellar travel. Scifi authors usually couple FTL travel with FTL communications; in tMiGE, the only way to send a message to another star system in a timely manner is to send a messenger ship. In addition, jumps between systems can only be made from specific points within each system, determined by the mass of the star and the arrangement of surrounding systems. aFUtD uses a similarly interesting, but completely different, device. Starships in the Beyond make micro-jumps, instantaneously jumping between two points in space and then calculating the next jump. This means that to go faster you just need more computing power. Systems built for different regions of the Beyond work differently; a bottom-lugger isn’t as fast as a state-of-the-art battleship except close to the Slow Zone.

In the fictional world I’ve been developing through a short story, interstellar travel is also interesting. Like tMiGE, the only way to go faster than light is with a spaceship. In my universe, ships have a minimum size requirement; messenger probes are out of the question. An interstellar drive has two parts: the ring, and the spikes. The ring manipulates space, flattening the local regions of the universe around the ship. While in theory a ring could be any size (bigger rings make bigger fields in a not quite linear fashion), it would lack control and have a tendency to fall into gravity fields. That’s why a ship needs spikes. Spikes are long, thin sensors that monitor the properties of the universe in small regions of space. They help the ring avoid massive bodies, correct for small spatial inconsistencies, and deactivate in the correct place. The more spikes a ship has, the safer and more precise it is. The higher quality a ring a ship has, the faster it can go. A ship that was too small wouldn’t be able to avoid planetary bodies or have a large enough detection field to navigate in flattened space. Ok, so maybe there is a little bit of Handwavium. But not THAT much.

You may be wondering: if the spikes hold sensors, why not just make a bigger spacecraft and imbed the sensors within the hull? Good question, reader. The answer is: you could. That is, if you are filthy rich. Rich people sometimes drive crazy cars and build crazy buildings, so certainly some people would make stylish spacecraft. At the end of the day, though, your spaceship is still occupying the same volume of space. It uses more sensors (unless you want minute pockets within your spaceship to expand and explode), and it only gives so much more interior space. It masses more, which means more energy or fuel to boost it through regular space. Spaceships aren’t like cars, either. Stylish lines are going to count for very little; even space stations don’t have windows, and nobody uses video to navigate. The result is that most spaceships are spheres inside a forest of spikes. Not very romantic, is it?

Mass is going to be the limiting factor on spaceship size. Unless you have very expensive spikes, you are still going to redimensionalize hundreds of thousands of miles from your target. You need some sort of in-system propulsion system. Since it is impractical to put a high-powered propulsion system aboard an already too-small ship, most spaceships would use local services: tugboats. Even obscure areas could afford one or two spacecraft with excellent traditional drives that can ferry interstellar craft around in cubic space. This also solves the problem of giving interstellar craft big dangerous drives that create exhaust. Except for military ships, redimensionalizing craft wouldn’t run the risk of toasting someone behind them. Military ships would be the exception; your enemies aren’t going to help you invade their system, so you need your own engines. On the other hand, military ships would be significantly different already. Most attack ships would be gigantic; they need to carry ship-board weapons, planetary craft, and a propulsion system. Military ships also carry prized interstellar equipment; governments are going to outfit their fleet with the finest rings and spikes.

Augmented Reality

Augmented reality games are great. They are a good way to encourage certain real life behaviors using game mechanics. For instance, there are a range of research projects focused on creating games that reward players for keeping track of and increasing environmentally sound behaviors, such as recycling and saving energy. Most of these games pit players against other real players, encouraging users to climb to the top of the leaderboards both locally, globally, and within groups of friends. Some games use virtual rewards within the game to encourage behavior. Zombies, Run! is a game that uses recreational running as the main game mechanic. As people run in real life they pick up items in the virtual world and progress the story. Players must also avoid virtual enemies by changing their routes in real life.

Ever since I played Skyrim I have had the idea of real life stats. As you did things during your day you could level up your skills and then compare them with friends. Skills could be anything from button-pressing to sneaking to agility to bush-trimming. Only recently though did I make the connection between ARGs and that idea. The game combines self-competition, leaderboard competition, and player vs. player competition. A person might focus on strength, so they might work out every day and then enter the activities they did from a wide selection. An algorithm would weight different activities differently, etc. But the skills aren’t only physical. People could increase their analog electronics skills, for example, or palm-reading.

Increased stats would unlock various ingame pieces of equipment, quests, and story arcs. Quests would require players to complete daring real life tasks, collect virtual items, or figure out puzzles. Quests would often involve prominent features of the surrounding area. An agility quest might involve cutting through a park while avoiding virtual defenses, or delivering an item to a virtual character in limited time. Puzzles could use public inscriptions, decoded in a special way, to point to ingame treasure. Generic quests such as gathering items or reaching various locations would also be available.

A large part of competition between friends would be PVP contests. The object is to either directly tag your opponent and tell them a code word, at which point they have to give you their number, or to lead them into a trap you have set. Other rules of engagement could also be available. Increased stats would help you in your struggle. Abilities, such as being able to locate your opponent, obscure your location, detect traps, or convince virtual characters to mislead your opponent, would come with increased levels of the respective skill. Equipment like traps and invisibility cloaks are available from ingame merchants for a price, but certain skills let players operate such equipment more effectively. Races are another option. Instead of trying to defeat your opponent, you are merely trying to complete a quest in a faster time than your challenger.

OpenGL and Geometry Generation

Today I was thinking about 3D rendering (in part because of the recent work I’ve been doing with ray tracing). I worked out all the math for drawing a polygon based on a list of vertices and a camera. I was considering coding it up, but then I realized that I was very unfamiliar in working with Windows (because I sure as hell wasn’t going to do this in Java). So I spent the greater portion of the afternoon reading a tutorial on Windows programming and using OpenGL, at which point I abandoned my original. I was just going to finally figure out how to use OpenGL.

I had worked with GLUT before when working on a Parallel Computing lab. However, I only used pixel control in that case; I was rendering subsections of a Mandelbrot set. However, that was easier because all the requisite libraries were already installed in the major lab at school (which has workstations with Gentoo installed). Working at home, I have been confounded. I just can’t get the linker to use all the requisite libraries.

The whole thing that got me thinking about 3D engines was my working on a HL2 level. Often I will import brushwork (pieces of the level) from the game’s campaign levels; it saves time and adds a nice level of detail to the environment. However, I was thinking about common elements such as stairs, doors, windows, and grates. It’s a multi-step process to cut a hole in a brush, unless you use carve (but nobody uses carve because it doesn’t give you control over how the geometry cuts). Doors are tedious to cut out and then line up with the texture. Non-solid stairs are the most painful to make, however. You have to arrange the steps and make sure the sidings match up, and for each new type of turn you have to rework the geometry. The whole idea of hand-making all the geometry in a level is ridiculous. I haven’t seen a single FPS level editor than lets you define procedures for geometry generation.

A screenshot of the Hammer UI

A screenshot of the Hammer UI


I feel like it would be relatively simple to define a generation process for buildings, for example. Each building is spaced a certain distance in from the sidewalk. There are maybe two or three justifications for things like planters and doors. Then windows are spaced evenly apart, with buffer spaces on either side of the building. You could attach balconies or planters on to every windows, awnings above doors, and even outdoor area layouts for cafes. After meticulously defining a couple of building styles, you could almost instantly generate entire blocks. Then come the nested procedures. A street, for example, would have periodic drains and manholes, distributions of building types based on the neighborhood type, and junctions to more streets. Signs, traffic lights, road markings, and crosswalks would all be placed correctly at street corners. Coul-de-sacs could fill up empty space. Interiors could be set as well for buildings. Floor plans could be modular. Rooms with distributions of room types and different layout permutations would combine into floors. A building type could have a sequence of floor types defined, such as bottom level stores and top level apartments. Central structures like stairwells would only need to be made once.

Although the procedural parameter definitions might take a while longer than making regular geometry, it would be a huge time saver. Not only could full geometries be generated, but intricate, custom-designed battle areas could be laid out faster. Common terrain pieces like walls, fortifications, stairs, railings, gates, and hedges could be created with the use of a single spline. Suddenly a task like designing the maps for my strategy game becomes less daunting. The pipeline for map production is shortened. General map layouts can be quickly sketched out and then directly generated. Beta testing would be infinitely easier, as map adjustments could be made in hours, rather than days.