Programming in 2016: game development

I tried to make a game this year. My body failed me. But I’ve been keeping up with the news in the world of game development, and 2016 has been exciting, if a bit frustrating.

Unity

Unity’s still the big kahuna for indie development. But they’ve gone to that same “rapid release” model that everyone else has, the same one that has all but ruined Firefox, Windows, and so many other projects. On top of that, they switched to a subscription model. Rather, they switched to a subscription-only model.

Yes, that’s right. You can only rent the Unity engine on a monthly basis now. It’s still free for tiny devs, but it actually costs more now for everybody else. Sure, there’s the new Plus tier (something like $40 a month, I think), but it doesn’t give you much over the Free version. By the time you need it, you can probably afford the full subscription.

On the technical side, they’re making progress towards Vulkan support, and there are rumblings about actually upgrading their version of C# to something approaching modern. That’s probably thanks to the .NET Core open-sourcing I mentioned last week, but I don’t care what the reasoning is. Any upgrade is welcome here.

The other rumor is that they might switch to C++. I…don’t know about that one. On the one hand, I have to say, “Yes, please!” Modern C++ is just as good as C# in almost every way. In many, it’s better. However, what does this do to that huge body of C# Unity code? If there’s a compatibility layer, then you’ve got inefficiencies. If they simply include the “old” engine, they’ve only made more work for themselves. And then you have JavaScript, which is still (mostly) a supported language for Unity coding. How would it fit in to a C++ future?

Godot

Godot is still my favorite 2D engine. It’s free, the source is open, and it’s very easy to use. 3D is a known problem, but that doesn’t bother me much; I’m not capable of making a 3D game anyway.

Well, Godot made their big announcement back in the summer, with the release of version 2.1. It’s not really revolutionary, but it sets the stage for greater things. Time will tell if those come to pass, but I think they will. With 2.2, we’re supposed to get a better renderer and possibly C# support. The big 3.0 might even add Vulkan to the mix, not that it helps me. And the Asset Library, well, it can only get bigger, right?

The main problem for Godot has been its documentation, and that’s much improved over this time last year. There’s a growing body of tutorials out there, too. I don’t think the engine has reached critical mass yet, but I also don’t think it has peaked.

Maybe—if I don’t get sick the day after I announce it—I’ll try another “game in a month” thing. If I do, it’ll be in Godot.

Lots of little ones

I didn’t do much in the way of development in 2016. I didn’t look at Unreal in anything other than passing, for example. But I’ve kept an eye on happenings in the game dev world, and here are some quick thoughts on other engines out there:

  • Unreal is, like the C++ it’s written in, solid and relatively unexciting. That’s what makes it exciting.
  • Superpowers might be a nice little JavaScript platform, but it’s got this horrible bug that makes all the dropdown boxes turn solid black. Makes it hard to use, you know?
  • Clickteam Fusion may or may not be getting bigger in 2017. They’re working on their version 3 release, and it might be cross-platform. Stay tuned for more on that front.
  • Amazon put out their Lumberyard (a fork of CryEngine). It’s free, as long as you’re willing to use their cloud services, but the real cost is in the machine you need to run the environment.
  • CryEngine itself is…strange. They’ve put out source code, but it’s not open. In fact, reading the license, t’s almost impossible to find a game you could even make! Maybe they’ll fix that, but I wouldn’t hold my breath.
  • The Atomic Game Engine looked like a promising release a few months ago, but it seems to be dead. The developers haven’t put out any news since May, and the forums were shut down in favor of Facebook. Sounds like they don’t want new users to me.
  • Finally, RPG Maker has a new version. It’s finally becoming something other than Windows-only, and the coding part has followed the hipster crowd from Ruby to JavaScript. In my opinion, that can only be a good thing.

I could go on, but I’m running out of year, so I’ll stop. Let’s just say this: 2016 was a good year for an independent game developer. 2017 will be even better. You’ve got a massive selection of engines at your disposal, from solid open-source offerings to AAA beasts. Maybe next year will be when we finally solve the asset problem. We’re getting there, slowly but surely.

Programming in 2016: languages

It’s nearing the end of another year, and that’s the cue for sites the world over to start looking back on the past twelve months. Due to a lack of creative impulse in the code sphere, I’ll be doing the same. So let’s see how the science and art of programming fared in 2016, starting with the advances and changes in programming languages.

JavaScript

JavaScript might not be the biggest language out there, but it’s certainly the one most people have experienced in some form, so it makes sense to start here. And JavaScript has certainly seen some improvements this year. For one thing, it’s got a new version, as the standards guys have moved to the same silly release model that gave us modern Firefox and Chrome. The only things added to ES2016 (what should have been ES7) are an exponent operator and a single new Array method, includes(). Absolutely nothing to get excited over, and the “big” changes, like async, are still in the future…if they’re ever put in at all.

On the other hand, the environment for JavaScript is getting better all the time. You can count on full ES5 support now, and you shouldn’t have too much trouble using ES6 features. Maybe you’ll need a polyfill for those, but that’s a temporary solution. And the one good thing about Windows 10 is Edge, if only because it’s the end of the “old” Internet Explorer and that browser’s awful support for, well, anything.

Outside the browser, Node keeps chugging along. They’ve had some problems there (such as the leftpad debacle), but they’ve got that whole Node/IO.js fork thing worked out. From a political standpoint, it’s not optimal, but the codebase is solid enough. The ecosystem is growing, too, as almost everybody is using some sort of Node/Webkit construction, from Visual Studio Code to Atom to Vivaldi.

As usual, JavaScript’s future looks much brighter than its past. It’s still straining at its own boundaries, but it’s growing. It’s becoming a better language. The two main platforms (browser and Node) have improved by leaps and bounds, and now they’ve become mature. In the next year, they’ll only get better.

C++

C++ had a big year in 2016, but it was all behind the scenes. The real test will come next year, when the C++17 standard comes out, but we already know what it’s going to have in it. What might that be? More of everything, really. I’ve already written about some of the more interesting bits in a three-part series back in August. (Part 1, Part 2, Part 3)

So 2017 looks like it’ll be fun, but what about now? “Modern” C++ is finally getting widespread support, so that’s good. Even those of you stuck on five-year cycles should now be ready for that, and C++14 was an incremental upgrade. On the platform side, it’s C++. The platform is your computer, or your phone, or your refrigerator. It’s the same platform it’s always been. That’s why you would use it over any other language.

C

Microsoft has been doing their schizophrenic love-hate thing with open source for a while now, but 2016 saw the biggest payoff of the “love” side. The open release of .NET Core happened this summer, complete with support for platforms other than Windows. Considering how hard it can be to get MS to even acknowledge such a thing, that’s practically a miracle.

It’s also the beginning of the end for Mono—the third E stands for Extinguish, remember—but that’s not as bad as it sounds. Mono still has its uses, mostly for older .NET code and the things that the MS offering won’t support. Oh, and they also bought Xamarin, whose main reason for existing seemed to be letting you write C# code for mobile devices. But if even some of .NET is open-source, we don’t need that anymore. The community can do it.

C# remains a Microsoft language, though. The MIT license won’t change that. It’ll definitely give non-Windows developers some peace of mind, but you always have to remember who holds the cards here.

Java

Java’s a funny thing. On the one hand, it’s not that bad a platform. On the other, it’s owned by Oracle. They’re still playing the part of Sisyphus, rolling a ball of lawsuits up the hill, only for the courts to send them right back down. But unlike in mythology, there’s the possibility that they might win.

If they do, it’s bad news for everyone, but most of all for Java developers. Who would want to use a language owned by a sue-happy corporation? (And now the C# fanboys can say, “There’s another thing Java ripped off!” Well, okay, at least MS hasn’t sued anybody using C#. Yet.)

But if you can put that out of your mind, Java’s not bad. It’s awful from a security standpoint, and the language sucks, and—well, you get the idea. I still believe it has some upside, though. Scala—or Clojure, if that’s the way you roll—makes using the JVM bearable. Android requires Java coding, even if they desperately want to call it something else.

So Java’s 2016 has been mostly dismal, but look on the bright side: Java 9 is coming soon. And one proposal on the table is “ahead-of-time compilation”. For Java. Just think about that for one second. Maybe I’m misunderstanding, but wasn’t that the exact thing Java was designed to prevent?

The rest

Other languages have had an interesting year, but it’s too much work to list them all. Besides, I haven’t used that many of them. But here’s a few of the highlights:

  • Rust is growing. It’s almost to the point of being usable! (The rewrite of Firefox into Rust will come before that point, however.)
  • Go is still bad, but at least Google isn’t trying to push it (or Dart) on Android devs anymore. I’ll call that an improvement.
  • Python really seems to be disappearing. It’s had some minor releases, but nothing amazing. That’s a good thing, but the glaring flaws of Python 3 haven’t gone away.
  • PHP remains the bad joke of the programming world, but maybe PHP 7 can fix that. Because PHP 6 did so well.
  • Perl 6…exists! Technically, that happened last Christmas, but it’s close enough. You can’t complain about a once-in-a-lifetime occurrence.

We’ll round out the year next week by looking at another area of development: games.

Classifying writing

So we’re getting close to another November, and that means it’s time to get to some serious writing business. Tomorrow, I’ll start, and I hope to reach the magic 50,000 mark once again. This time around, I’ll give a lot more story detail in my daily updates, along with the running word counts.

The novel I’m writing this year has the working title Nocturne, and it’s my first real attempt at book-length fantasy of the “traditional” style. It’ll have magic and mystery and all that stuff. And unlike my Linear Anthology series, it’ll be a “full-length” novel.

But what does that even mean? What’s the difference between a novel and a novella? And where do short stories fit in? Sure, there is significant overlap, and you can say it’s really a continuum; you can have short novels and long novellas. But for an objective metric, a first approximation, we can use the same measurement that every NaNoWriMo participant will be looking at come tomorrow: word count.

Taking the length of one of my works, I divide it into one of three categories: novel, novella, or short story. The numbers I use are pretty simple, and they’re loosely based on the NaNoWriMo “50,000 words” milestone.

  • A novel, for me, is a work that is at least 50,000 words. Preferably, I want it to be 60,000+, but that’s for a very specific reason: I consider my Otherworld series (I’ll start posting those to supporters in the coming months) to be made up of novellas, but some of them run as high as 59,000 words. This is where the stylistic argument comes in. Oh, and there’s no real upper limit, either. The longest work I’ve written weighs in at about 250K, and it’s still a novel. A ponderous tome indeed, but a novel all the same.

  • A novella is shorter, no more than 50-60K. It has to be a minimum of 15,000, though 20,000 is better. (The mathematically inclined reader will notice a pattern here.) By the 20K standard, I don’t actually have any novellas written yet, but I’ll remedy that soon enough.

  • Finally, I consider a short story to be anything under the minimum for a novella. Thus, it can range up to 20,000 words, though anything over 15K is pushing it. (If you prefer a category of “novelette”, then you can slot it in here as 5-15K or 6-20K, with short stories being even shorter than that.) My short stories, however, often have a lot more plot and worldbuilding than you’d expect from something with that name.

So, to sum up, it looks like this:

Type Length (5) Length (6)
Short story < 15,000 < 20,000
Novelette* 5,000-15,000 6,000-20,000
Novella 15,000-50,000 20,000-60,000
Novel > 50,000 > 60,000

Pick which progression you want to follow, and there you go. If you like the novelette category, use its minimum as the maximum for short stories. And don’t neglect the style differences between the different types of work. They’re what led me to make two different classifications in the first place. Novels have more subplots, for example, and I want a novella to be long enough that it has the depth to hook me, but not so long that I can’t read it in one sitting.

Now, it’s onward to November. Can I do this for the fifth straight year? Stay tuned!

Gamification and coding

One of the big trends this decade has been gamification. By turning everyday tasks into games, the theory goes, a person’s natural competitive streak will be triggered, causing that person to put more effort into accomplishing the task, and accomplishing it well. Companies do it with their employees, web forums have begun to implement it for their users and moderators, and so on.

It was only a matter of time before someone brought it to programming. Actually, that happened years ago. Coding competitions have been around a long time, but I saw a link to CodinGame the other day, and that got me thinking.

Games people play

The idea behind gamification isn’t hard to understand. Humans are competitive by nature. We like to win, to be better than the rest. And we really like it when there’s an objective measure of just how much better we are. The Olympics weren’t that long ago, and how many of you remember watching in anticipation, staring at the world records in the corner of the screen? How often were you on the edge of your seat, waiting for the judges’ scores to pop up?

It’s not just sports, though. Most games have some element of scoring, some record of accomplishment. In Monopoly, for example, you’ve got an obvious one: the amount of money in front of you. (Unless you’re playing one of those newer versions with the credit cards, in which case, why?) In video games, tables of high scores have existed for decades, especially in arcade games. And we wanted to set those high scores so bad, because that brought a small measure of fame. Everyone could see that MHP (or whatever) was the best at that game, at least until somebody posted a better score.

Today, when we play over the Internet instead of in public, we have online leaderboards instead, but the principle is the same. It drives us to improve, to reach for that top spot. (Story time: While my brother was working at Amazon a few years ago, I spent about three hours on his XBox, playing Forza 4 and trying to set a record in one of its weekly challenges, a quarter-mile drag race. It was some of the most fun and satisfying gameplay I’ve ever had, even though I never got higher than about 26th.)

Achievements are another popular aspect of modern games, and they work the same way. As Pokemon taught us: you gotta catch ’em all! And that’s how it is with achievements. We see that list, those empty spots, and we have goals. We have something to strive for.

That’s what gamification is. It’s the transfer of that competitive urge, that desire to complete a set or simply win, to mundane work. By adding points and trophies and collectibles, we transform drudgery into entertainment. Whether at school, on the job, or in a social setting, these artificial goals effectively make us believe we’re playing a game. Games are fun, right? So if we make the boring stuff into a game, then it magically becomes fun! Well, maybe. It doesn’t always work, and it’s not for everybody.

Games without frontiers

In theory, almost anything can be gamified, but we’re talking about programming here, so let’s stick to that. How can we make writing computer programs into a game? There are a few obvious answers. One is to make a game about coding, as with else heart.break() or TIS-100. That works, but it’s very much a niche. Another option is adding subtle programming abilities into an otherwise unrelated game. Minecraft has redstone, for example, which allows you to build logic gates, the building blocks of computing, while Final Fantasy XII gave players a bit of power to program their AI-controlled party members. In those cases, however, the programming part is not the focus. It’s an aside, sometimes an unwelcome one.

True gamification of coding, as CodinGame does, is different. It’s more of a series of programming challenges, each with objective measures of success and prowess. Code has to be correct, first and foremost. It has to do what it was designed to do. It’s also good if it’s fast; given two identically correct programs, the faster one is usually considered better. Space is another factor—smaller is generally better—and you can come up with other metrics. (“Lines of code”, by the way, is not a very good one.)

Once you have a way of measuring the “score”, you’re halfway to making a game of it. Post the scores publicly, and watch as coders eagerly train at their craft for no other reason than to move up a spot or two. It’s almost like magic!

Can it work, though? I don’t know. It works for a lot of people, but not everyone. We’re not all the same. Some of us don’t have that competitive streak, or we don’t act on it. For them, gamification is a waste of time. But for the rest of the populace, it can create a reason to learn, a reason to want to learn. That’s something the world could use a lot more of, so I say it’s worth a shot.

Social Liberty: Issues

A theory of government is useless unless it has a connection to the real world. If it does not make practical suggestions and predictions, if it does not yield practical advice, then it is nothing more than a thought experiment. To alleviate such concerns, this post will explore some of the ways a government founded on the Doctrine of Social Liberty would handle some of the most pressing issues of today. The format will be different than usual, with each issue given its own section. Also, while the government described in this piece is theoretical, it is not implausible.

Immigration

Social Liberty, with the Principles of Cooperation and Equality, sees immigration as a good thing, on the whole. A nation should not isolate itself from all the others. However, it also recognizes that some immigrants are bad actors. Under the Principle of Purpose, therefore, it must take steps to ensure that its citizens’ safety is not compromised by incoming persons.

A Social Liberty government is not allowed to perform racial profiling for the purpose of immigration control—or, indeed, for any purpose at all. And the Right of Faith, something that all states following the Doctrine would observe, also bars profiling based on religion. Instead, this government is required to perform more rigorous tests, including behavioral, background, and psychological checks on all immigrants. For most, these are, at worst, a mild inconvenience; in many cases, they can be done automatically, before the immigration process even begins. It is only when the more basic tests show an anomaly that more serious scrutiny is warranted.

Illegal immigration, on the other hand, can be taken one of two ways. First, it can be seen as an attack on sovereignty. Under the Principle of Purpose, it would be the role of government to respond swiftly at this threat to safety. A contrasting view would see it instead as a violation of the Principle of Cooperation: such immigrants are working against the system chosen by the citizens of the state. The result is the same in either case. Although Social Liberty respects the rights of all mankind, it does not give carte blanche to those seeking to enter a state by subterfuge. By creating a fair, just means of legal immigration, instead of the security theater common today, it would eliminate a major cause of illegal immigration, limiting it only to those who have ulterior motives and thus making harsher punishment socially acceptable.

Entitlements

With the Principles of Purpose and Cooperation, it is easy to envision Social Liberty as a recipe for socialism. This is by design. A representative government is free to implement whatever economic measures its people are willing to approve, but there will always be a sizable segment of the populace without access or ability to work for a living. Whether through injury, handicap, situation, or lifestyle, a portion of the state will be unemployed. It is then up to the government to provide for that segment’s health needs.

Social Liberty, then, is fully compatible with a large welfare state, including universal health care, a universal basic income, and many other measures. However, it can also be reconciled with a more capitalistic approach. The Principle of Purpose only states that a government protects the health and well-being of its constituents. It need not provide for them, if private interests can do so more cheaply and efficiently. Rather, its purpose would then be to ensure that these private means remain in place, and that they do not infringe upon the Rights of the populace. This last part is necessary because, although Social Liberty largely refrains from interference in interpersonal relations, the object here is a function of government. Thus, government must not, by its own inaction, allow for its Principles to be violated within its own sphere.

Military

A Social Liberty government must have a means of defense. It does not, however, require an outsized military-industrial complex, massive expenditures for research and development, or an arsenal capable of destroying the entire world many times over. In short, such a state needs only as much military might as to fulfill its obligations under the Principle of Purpose and those it creates under international agreements.

In addition, as a government following the Doctrine is expected to refrain from offensive, imperialistic warfare, its military actions will be more limited in their scope. Once the primary objectives are achieved, there is no need to continue fighting. Thus, further engagement becomes more and more likely to fall outside the dictates of the Principle of Purpose. When a state is fighting not for its own defense—or that of its allies—then it is no longer serving the needs of its citizenry.

Social justice

Although the phrases are similar, Social Liberty is not intended to advance the cause of social justice. True justice is a matter for government—one of the instances where it is allowed to interfere with interpersonal relations. If rights are being violated, that is a matter for the state to judge. The people are allowed and encouraged to speak their minds, to not associate with those they deem unacceptable; this is simply a restatement of the Right of Free Expression that any Social Liberty government is expected to uphold.

People are not, however, allowed to restrict the same right for another. A concerted effort to deny free expression to an individual or group is a case where government intervention is both required and welcome. The Doctrine of Social Liberty is blind to “privilege”; it treats all such cases equally, because to do otherwise would run afoul of the Principle of Equality.

Conclusion

This concludes the brief look at the Doctrine of Social Liberty, a new vision for a government of, by, and for the people. Founded on the principles of logic and reason, it is intended to be a guiding focus for change, whether evolutionary or revolutionary. It is also an ideal, one that may never truly be achieved. If it is, then I believe that the resulting system of government would be one better suited for today’s world than any that has been tried before. We must all work together, though, always keeping our ultimate goal in mind. To stray from the path is to invite tyranny, inequality, and infighting that will destroy us. But by cooperating, we can reach greater heights, perhaps even the greatest.

Social Liberty: Relations

A person does not exist in a vacuum, and neither can a government. We are all connected, whether in our relationships to each other or by the ways we interact with society at large—our society, as well as others. Thus, a proper system of government must recognize these relationships if it is to fulfill its purpose.

There are three main types of relation that are of interest to a governing body: those between two people, those between two governments, and those between a person and the government. We will look at each of these in turn.

Interpersonal relations, those between two members of the same society, are the simplest to handle under the Doctrine of Social Liberty. As the Doctrine’s principles of good government define only those aspects necessary for a stable state, Social Liberty effectively takes no sides. It is not entirely silent on the issue; rather, interpersonal relations are considered private matters, only becoming of importance to the government if and when natural or granted rights become an issue.

One case where this can happen is in contracts. Under most circumstances, Social Liberty considers a contract willingly entered and in good faith negotiated to be entirely outside the scope of government interference. A citizen may waive some of his rights to another, and it is of no consequence to the state. However, a contract may not be designed to break laws, so the government can be asked to intervene to determine if an agreement is unlawful. Similarly, contracts of adhesion—where one party is essentially forced into unfair terms, with no opportunity for negotiation—do become matters for a Social Liberty government, as they are an attack on the founding principles of the state, namely, the Principle of Purpose: onerous contracts affect the liberties and well-being of those parties bound by them.

Other obvious instances where government interference in interpersonal relations is acceptable to the Doctrine include cases of abusive behavior—whether to children or adults—injury through negligence, and most abuses of authority. In general, you may sign away your rights, but you may not take those of another.

International relations are at the other extreme. Here, as a government represents its populace, it has near total control over negotiations and agreements. Within the confines of the Principles, a state may agree on behalf of its people to any number of treaties, trade deals, international conventions, and offers or requests for aid. The populace decides whether these measures are appropriate through the mechanisms of representation, and it should be understood (via the Principle of Evolution) that these international agreements are always subject to renegotiation, should they no longer serve their stated purpose.

It is far easier to enumerate those international actions a Social Liberty government cannot take. It cannot, for example, declare a war for the sole purpose of obtaining land or resources. Nor can it impose sanctions on other nations or regions based on their race, religion, or even their own system of government. And it cannot work to overthrow regimes, as there is no possible explanation for such an act that does not conflict with the Principle of Necessity.

Finally, we must look at the interactions between a person and the government. These are subject to the Principles as well as the Rights, Laws, and Responsibilities of the nation-state. In fact, such interactions are entirely governed by them. Thus, there is little to be said about them here. A government must treat its citizens in accordance with its defining Principles and its code of Laws, while citizens must follow those Laws and uphold their own Responsibilities. Anything else is a violation of the social contract between governed and governing.

However, there are always corner cases, so-called gray areas. It is up to a specific state to clearly delineate these outliers. The Doctrine itself must remain silent on them, as they are often highly situational. For example, what are the intrinsic factors of the Principle of Equality? One can imagine a world in which science has provided the ability to alter skin color at will. Here, “race”, in the sense of color, is no longer an intrinsic factor. Therefore, it does not qualify for the Principle of Equality. Potentially, the same could be true of many other factors we would consider intrinsic, such as sex or other genetic indicators.

It is by relating to others that we experience more of the world. Thus, a government must respect those relations. It must understand them. Sometimes, it must make its own. The Doctrine of Social Liberty recognizes these necessities. Its Principles confine and constrain the government’s role in these relationships, defining that role as the minimum needed to function while upholding the rights of all.

Social Liberty: Rights and Responsibilities

The following are some of the founding rights of Social Liberty, as set out by the Principle of Initial Conditions. Each is then given its own commentary regarding how it fits within the system and why it was chosen.

Right of Free Expression — All persons have the right to express in spoken, written, and published forms any truthful or opinionated statement not intended to cause direct harm to another, whether alone or with others.

This is a restatement of part of the First Amendment, covering freedom of speech and the press together with the right to assemble. “Direct” harm is intentional: words have no power to physically hurt, but they can incite others to do so.

Right of Faith — All persons have the right to practice their own faith without interference from a citizen or government.

This one covers the Establishment Clause part of the First, as well as most other “freedom of religion” aspects. Note that something like a cult where members are poisoned, or the rape and slavery practiced by ISIS, are not protected under the Right of Faith; allowing those violates the higher Principle of Purpose, as a government must endeavor to keep its citizenry safe.

Right of Arms — All persons are permitted to own and bear personal arms intended for their own defense.

Your basic Second Amendment, but written more clearly. Also, there’s no room for a comma splice to change the meaning.

Right to Privacy — No agent of government may observe or search a person without a warrant obtained under reasonable suspicion that a crime has been committed, nor may an agent of government seize any of a person’s property unless that person has been charged with a crime.

Definition of Agent of Government — An agent of government, in regards to the Right to Privacy, is any person working directly subordinate to the state for purposes of defense, security, or law enforcement, or granted such status by another agent.

Here’s your Fourth, with the usual search-and-seizure stuff. “Observe” includes wiretaps, too, and you can see how it also covers the Third Amendment.

Right to Criminal Trial — A person charged with committing a crime must be allowed a fair trial, by a jury if that person so chooses, without undue delay, and the person must be given sufficient opportunity to present a defense of the charges.

Standard Sixth with this one, plus a requirement that the court allow a proper defense. No “freeze their assets so they can’t pay a lawyer” trickery here.

Right to Civil Trial — When two people are in dispute regarding a debt or infringement of rights, either party may request a judicial hearing or jury trial to settle that dispute.

This one’s the Seventh Amendment, often forgotten in our time of binding arbitration. Arbitration, as a private matter, is not part of Social Liberty. Only the use of it in place of a court is within the government’s purview.

Right to Petition — Any person may petition the government, through a trial by an impartial arbiter or jury of citizens, to redress a perceived violation of that person’s rights.

This one’s actually part of the First Amendment (“petition the government for a redress of grievances”), but it’s put here so it falls with the other “trial” Rights. Effectively, it is the right to sue the government if it is breaching your rights. As with the others, the wronged party has the right to choose a hearing or jury trial.

Right to Freedom of Person — No person may be forced by another to work without proper compensation.

Definition of Proper Compensation — Proper compensation, in regards to the Right to Freedom of Person, consists of monetary pay, tangible benefits, and status or rank as befits the work performed.

Slavery, technically, is forbidden by the Principle of Purpose, but this restates it as a Right, roughly equivalent to the Thirteenth Amendment. The definition also subtly invokes minimum wage, “wage gaps” (via the Principle of Equality), and things like insurance benefits.

Right to Vote — All able citizens are permitted to vote on matters of government representation and public petitions, and no action may be taken by another to deprive a person of this right.

Responsibility Of Voting — An able citizen must vote in representative elections or on balloted matters of local or state import, unless this would cause undue hardship or duress.

Definition of Able Citizen — Regarding the Right to Vote and the Responsibility of Voting, an able citizen is a person above the age of majority who is of sound mind.

Voting rights are mentioned in quite a few amendments to the US Constitution: the 15th, 19th, 24th, and 26th are all concerned with opening up the vote to more people. Social Liberty dispenses with all that; every adult who is capable of doing so not only can vote, but must vote. In other words, it’s more like Australia, where everyone is both automatically registered and required to vote in elections. Also, ballot measures are enshrined here as an important part of the political process.

These are not the only rights granted by the Doctrine of Social Liberty, but they are some of the most notable. For the most part, they flow logically from the Principle of Initial Conditions, sometimes affected by the other Principles. And they are rights that, when stated in this form, should be universally agreed upon. Nothing in them prefers or promotes a specific political agenda, except the general notion of greater liberty for all.

Social Liberty: Definitions

First, let us call the fundametnal properties of good government the Principles. These are so central to the idea of Social Liberty that they literally cannot be violated within its framework. A Principle is inviolate by definition, for changing it would change the nature of the space. Principles are thus axiomatic; the six I have chosen define the very concept of Social Liberty.

Second, a Right is a property taken to be inherent to the system. It cannot be abridged, violated, or removed except by another Right or as punishment. Rights in Social Liberty include many of those taken to be inalienable and self-evident, such as freedom of expression, freedom of religion, the right to bear arms, and the right to a trial. A new right can be created, as described by the Principle of Evolution, in a manner dependent upon the system of government.

Third, a Law may be defined as a requirement that must be followed by the citizens of a state. Laws may not be written to directly infringe Rights, but they may define the boundaries of those Rights, and violation of a Law may cause Rights to be lost temporarily. In addition, Laws may be used to clarify cases where two different Rights are in conflict. For example, a Law cannot revoke a Right of Free Speech, but it is allowed to spell out those instances where that Right is overruled by a Right of Privacy.

Fourth, a Responsibility is a duty impressed upon citizens as part of the social contract they form with their government. Laws may bring about Responsibilities, but these may not permanently deprive a citizen of a Right. Responsibilities may also arise logically from Principles; these Responsibilities may violate Laws and limit Rights.

Fifth, a Privilege is subordinate to a Law. It is a lesser right created by the interaction of Laws and Rights, and it may be removed by either. New Rights are rare, but new Privileges may be invented more rapidly, under the Principle of Evolution.

Finally, let us define a Definition as a clarification of the meaning of a word as it is used in the text of a Right, Responsibility, Law, or Privilege.

The Doctrine of Social Liberty is made up of these Principles, Rights, Responsibilities, Laws, and Definitions. They are written in plain language, because understanding the principles of one’s state is necessary for a citizen. Each is given a name for easier reference, as in this example:

Right of Arms — All persons are permitted to own and bear personal arms intended for their own defense.

In later Laws or other text, this can be referred to simply as “the Right of Arms”. For example:

Law of Disallowed Weapons — Any weapon capable of killing multiple people with a single shot, or requiring the operation of more than one person, shall not be considered a personal arm under the Right of Arms.

With these definitions, we are able to construct the structure necessary to create a nation-state that fulfills the goals of Social Liberty.

On procedural generation

One of my favorite uses of code is to create things. It always has been. When I was young, I was fascinated by fractals and terrain generators and the like. The whole idea of making the code to make something else always appealed to me. Now, as it turns out, the rest of the world has come to the same conclusion.

Procedural generation is all the rage in games these days. Minecraft, of course, has made a killing off of creating worlds from nothing. No Man’s Sky may have flopped, but you can’t fault its ambition: not only was it supposed to have procedurally-generated worlds, but a whole galaxy full of aliens, quests, and, well, content. That last part didn’t happen, but not because of impossibility. The list goes on—and back, as Elite, with its eight galaxies full of procedural star systems, is about as old as I am.

Terrain

Procedural terrain is probably the most widely known form of generation. Even if you’ve never played with TerraGen or something like that, you’ve probably played or seen a game that used procedural heightmaps. (Or voxels, like Minecraft.) Making terrain from code is embarrassingly easy, and I intend to do a post in the near future about it.

From the initial generation, you can add in lots of little extras. Multiple passes, possibly using different algorithms or parameters, give a more lifelike world. Tweaking, say, the sea level changes your jagged mountain range into an archipelago. You can go even further, adding in simulated plate tectonics or volcanic deposition or coastline erosion. There really are no boundaries, but realism takes some work.

Textures and models

Most 3D modeling software will give you an option to make “procedural” textures. These can be cool and trippy, especially those based on noise functions, but it’s very difficult to use them to make something realistic. That doesn’t stop them from being useful for other things; a noise bump map might be more interesting than a noise texture, but the principle is the same.

Going one step up—to actual procedural models—is…not trivial. The “creature generators” as in No Man’s Sky or Spore are severely limited in what they can do. That’s because making models is hard work already. Leaving the job in the hands of an algorithm is asking for disaster. You’re usually better off doing as they do, taking a “base” and altering it algorithmically, but in known ways.

Sound

Procedural sound effects and music interest me a lot. I like music, I like code. It seems only natural to want to combine the two. And there are procedural audio packages out there. Making them sound melodic is like getting a procedural model to work, but for your ears instead of your eyes. It’s far from easy. And most procedural music tends to sound either very loopy and repetitive, or utterly listless. The generating algorithms we use aren’t really suited for musical structure.

Story

Now here’s an intriguing notion: what if algorithms could write a story for us? Creating something coherent is at the high end of the difficulty curve, but that hasn’t stopped some from trying. There’s even a NaNoWriMo-like contest for it.

On a smaller scale, games have been making side quests and algorithmic NPCs for years. That part isn’t solved, but it isn’t hard. (For some reason, Fallout 4 got a lot of press for its “radiant quests” in 2015, like it was something new. Though those are, I think, more random than procedural…) Like modeling, the easiest method is to fill in parts of a pre-arranged skeleton, a bit like Mad Libs.

Anything else

Really, there’s no limit to what can be made through procedural generation. That’s probably why I like it so much. From a small starting seed and a collection of algorithms, amazing things can be brought forth. In an age of multi-gigabyte games full of motion-captured animation, professional voice talent, and real-world scenery, it’s a refreshing change to make something beautiful out of a few letters and numbers.

The alternative

No form of government is perfect. If one were, every nation-state would eventually gravitate towards it. Nor will I say that I have developed the perfect form of rule. In fact, I’m not sure such a thing is possible. However, I can present an alternative to the deeply flawed systems of the present day.

Guided by the principles of good government we have previously seen, and aided by logic, reason, and the wisdom of ages, we can derive a new method, a better method. It is not a fully-formed system. Rather, it is a framework with which we can tinker and adjust. It is a doctrine, what I call the Doctrine of Social Liberty.

I cannot accept the strictures of current political movements. In my eyes, they all fail at some point. That is the reason for stating my principles. Those are the core beliefs I hold, generalized into something that can apply to any nation, any state. A government that does not follow those principles is one that fails to represent me. I am a realist; as I said above, nothing is perfect. Yet we should strive for perfection, despite it being ever unattainable. The Doctrine of Social Liberty is my step in that direction.

More than ever, we need a sensible, rational government based on sound fundamentals. The answer does not lie in slavishly following the dogmatic manifestos of radical movements. It does not lie in constant partisan bickering. It can only be found by taking a step back, by asking ourselves what it is that we want from that which governs us.

Over the coming weeks, I hope to detail what I want from a government. I don’t normally post on Tuesdays, but the coming election presents a suitable reason to do so. In four posts, I will describe my doctrine in its broadest strokes, and I will show how our current ruling class violates the principles I have laid out. Afterward, following the start of next year, I want to go into greater detail, because I think these things will become even more relevant.