Friday, May 27, 2016

Tech Trees

"Survival" is a new genre. For a while, it was just Minecraft. But now the genre has taken on a life of its own: survival with dinosaurs, survival in space, 2D survival, 2D survival in space, Son of Revenge of the Bride of Survival, ...

The three basic elements are fending off the elements and bad guys, building a base, and climbing a tech tree. Other than sandbox (diorama-building) and achievement-hunting, both of which can go on practically forever, the "game" is over when you reach the top of the tech tree. Some games have game levels (Minecraft is one such, but generally I'm thinking of games like Portal Knights) and so the game is "over" when you reach the top level and beat the last boss.

To me, though, the "proper" gameplay in a survival world is cooperative multiplayer, with a standalone server. Some like PvP servers, and although that's not my thing, I'll grant it's valid and important.

Hence: the width and breadth of the tech tree is the game.

Breadth

Breadth can have several different implementations. In some games, every character learns the entire breadth of the tech tree. In games where the limit is in resource types, and there's no research or tech tree proper -- just the raw resources themselves -- then that breadth is just providing options; everyone has access to them.

Another implementation is to require players to specialize, perhaps via a class-based mechanism. Players only climb the tree in the areas they have access to. Maybe there's variation within the class, but that's a secondary concern. Generally any class-based game follows this model, and it's not one that I've seen much. You see it in RPGs all the time, but not often in Survival. I think I've seen this once but I don't recall the game. So maybe I'm just making this up? Anyway, if unexplored, then it's a novel gameplay option!

I think the most common implementation is to give players just enough points to specialize in a portion of the tech tree; hence a well-run base is one run by several people, each with their own specialization. Often the way "around" this limitation is just by gaining levels; if you really do want everything, you'll get it, it'll just take longer.

Height

Height, of course, varies. Minecraft is both narrow and short; you can get to the highest tech tree in a couple hours of play. Diamonds take more determination than diligence or skill to acquire; you don't need to laboriously climb your way up to them.

Empyrion has a well-staged height to its tech tree: first there's survival, then base-building, then ground-based vehicles (Hover Vehicles), then small ships, then capital ships. Each step expands the range that the player has exponentially -- which is hard to do too many times. Generically, these might be: village, state, country, planet, solar system, galaxy, universe. One might take a few steps there, eg inter-system travel might initially be limited to system-to-system (as it is in Elite) and then later progress to being able to jump across many systems (hundreds of light-years, or thousands, up to the 150 thousand light-years from one end of the Milky Way to the other). In factors-of-ten, that yields six steps between closest-neighbors to cross-galaxy. Then throw in travel to other galaxies (but man, would you want to model that?) In a game that starts with just you and a suit on a planet, managing 400 billion stars is ... out of scope. No player will visit them. No army of players will visit them. There's no way to manage it all. If I had ten million players, and they each played my game for ten years, and they each visited a new star (and never the same star twice), then they'd see them all. But then... each player will have visited 1000 stars but not left anything behind. How would you manage that? Are you making a strategy game or a survival game?

Let's go the other way; back to prehistory. Among mankind, technological progress might be: wood tools, stone tools, early iron tools, copper and bronze, late iron tools, steel and steam, automation and factories, analog circuits, digital circuits, and then dozens of generations of digital circuits, and then the video-card evolution... What's next for us?

Mode

There's another twist to height: in MC, once you've gotten diamond gear, the next step is to head to the Nether and start brewing potions and enchanting gear. Hence there's really three stages: normal crafting, enchanting, and brewing. This is kinda like human progress: we went from simple stone tools up to steel, but then the frontier of material science changed to alloy steels, other metals, plastics and polymers, and ceramics. Top-end planes and spacecraft aren't made from Plutronium or some random exotic element, but from ceramics and exotic alloys -- often of non-ferric metals.

I'm going to call this "Mode." While playing a game, you might transition from one sort of advancement (materials) to a different type (alchemy). In modern and future genres, Modal changes are a switch from resource gathering to improved production methods.

Great, so you mined iron and can produce high-purity steel (in a Space-based game), but so what? What's next? Consider what else you mix in, and why: corrosion resistance, hardness, machinability, strength, melting point. And I don't know enough about exotic ceramics to even start there. But alloys, ceramics, polymers, and plastics are easys way to add more tiers to a terrestial-based tech tree, and perhaps a useful step in extending gameplay for space-based games.

Polymers are, then, like enchanting or alchemy: you use metals for one thing, and polymers for another. (Metals often where resistance to shocks is required, and ceramics where cost is no object!)

OK, so let me come back to the point here, which is extending gameplay. What happens when you get to the top of the tech tree? Many players get bored and move on. Fun is when you're not bored; I think I wrote a blog post on that a decade ago. If there's nothing new to explore, nothing new to discover, then explorer-type players get bored. Power-based players will give up if they can't get an even more powerful weapon. (They don't care if the remaining "advancements" are just cosmetic, or simplify production.)

Widening the tech tree can make it easier to get multiple players together, and to provide a valuable sense of purpose to players. This can also give players a reason to re-play the game; to start over and try a different branch of the tree.

Heightening (? lengthening?) the tech tree extends the number of hours players will put into the game. You could just add multiple different areas that provide the same high-end material that differ only cosmetically, and this does extend gameplay a bit, but it's often very resource-intensive to add those bits to a game. Adding a new tier of gear tends to be easier.

One other way to extend gameplay is to add end-game content. Yet, in RPGs, this is just a modal change: players switch from leveling their character to leveling gear: a switch from char level to ilevel. For players in a survival game, once they've gotten the biggest, most bad-ass gear, then what else is there to do? Go defeat the toughest monster -- but if you have the best gear, then that's that.

Wednesday, April 27, 2016

Now Certified

As mentioned previously, I took the Unity Certified Developer exam on Monday. Passed! Yay! I am now certified.

First, a few notes on the exam:

  • If you can schedule time to take the test, take it!
  • It's all multiple choice, matching, and hot-spot identification. No essays or written answers required.
  • After the tests in a couple days, there's two in Bogata next month, and then tests in Amsterdam in June. It'll be a while before the exam makes its rounds again.

The tricky thing is that there isn't any courseware for the exam yet. There's a 3-page sheet of Exam Objectives, but that's mostly a thin gloss. The exam difficulty, to me, felt really spotty. Some sections had two questions that, if you read one page in the manual, would be trivial to answer. Other sections had a dozen questions or more and required some very specific knowledge, down to what keys to press to do certain things and how the compiler would feel about a handful of statements.

The next certifications that they add are going to be interesting; there's the Pro Programmer, Pro Artist, and Expert certifications that they've mentioned -- although there's no guarantee that those exams will be released, and no timeline for when they'll add them. Right now, I think, having the Certified Developer certification will be a rare thing on a resume and hence pretty useful. It's proof that you know your way around Unity. If all you did was watch an hour of video or played with the app for that long, there's no way you'd pass the test. Walking through the Exam Objectives was, to me, critical, as it made sure that I looked at features that I don't use day-to-day. Cloud Build? Navigation? I understand them loosely and I looked at videos years ago (well, not for cloud build; tho I did go to a meetup that discussed it) but I don't use these things. Passing the exam meant knowing these systems in some detail.

Which means the advanced tests are gonna be brutal.

As a programmer, I thought I'd have an easy time with the Programming section. Just for this basic test you'd have to be able to write a blog post on any of the sub-topics listed in the Objectives to get questions right. What's the Pro Programmer test gonna do?!

I'm still cleaning up my notes, and I'll be posting them here. I can't give away the text of any of the questions, but I'm going through the sections making sure that I covered what the test covered.

Monday, April 25, 2016

I'm Gonna Take the Unity Certification!

Scheduled later today! Unity just started offering the certification, and for right now there's just this one certification. They suggest that they'll later offer Professional Programmer, Professional Artist, and Expert certs, but for now it's just the one. I figure it'll serve as proof that one's at least gone through a set of tutorials and has played with all of the major bits of the engine. As someone that's been a Senior Engineer for over a decade it might seem odd that I'm taking the cert, but since I haven't yet gotten paid for any of my Unity work I'm actually in the target market. (The other major cohort would be college students or new college grads.)

I've been going over review material for the past week and I took extensive notes, with the idea of sharing them here. Once I take the test, I'll go back over each of the sections and review them to make sure they're actually relevant for the test. Look for those posts over the coming weeks.

One of the weird things to note is that you're required to bring a wifi-enabled laptop to the test. I guess a Chromebook would work, but I doubt that an iPad would. Dunno. I expect to see laptops, since that's what all the kids use these days. :P

The scheduled time is two hours, but evidently the test starts a half-hour after the start of that block, so the test itself I guess is limited to 90 minutes. Prior to that is "make sure your laptop works for this," I guess. I looked at the refund/retake policy and it seemed to be "you can only take the test once," so failing it doesn't allow you to freely retake it but I have no idea if technical difficulties established prior to the start of the test would suffice.

It does cost $250. For a starving post-college or non-college student that's a good chunk of change, but, again, I think the certification itself is great proof that you actually know your way around the engine.

So, who here is thinking of taking the certification? Or has already taken it? Raise your hands!