Tuesday, June 12, 2012

setting up shop

Having my work desk in my bedroom just isn't sitting right with me, so today, I decided to start clearing out some of the things I have laying around in the garage of where I'm living. I set up a fan to keep the temperature at a reasonable level, moved a few things around and made enough space to set up a small work table I haven't been using, and plopped a few piles of books that have been sitting in boxes for months onto it, along with my laptop with a fresh install of Ubuntu 11.10 (Ubuntu 12.04 just rubs me the wrong way), got the wifi going, and started putting some things up on Amazon Marketplace.

A significant portion of the books I've gone through so far either had some redeeming quality about them (being about a geeky subject that I don't know much about helps), or would actually end up costing me more money to sell through Amazon than I could possibly hope to earn. The books in the latter category will probably end up going to Goodwill or a public library. The geeky books might just go back into boxes, because honestly I have enough books in my reading queue as it is to keep me busy for at least a year or two. It may turn out to be the prudent thing to just sell them now to someone who could put them to better use and then, if I need the information down the road, just purchase another copy, possibly a newer edition of them. Some of the books in my collection that I would honestly tell you are completely useless turn out to have pretty decent selling prices (read: > $10) on Amazon Marketplace. I suppose there are other people out there who value them more than I do, and that, I suppose, is a good thing.

The aim of all this, of course, is not merely to make money selling books. The money from this is really secondary. It's really more about clearing out enough space in the garage to bring in my work desk and get a proper office space going. I am thinking that it is important to be able to fully engage in work at work, and to fully disengage from work at home. Be fully productive at work, and fully relaxing at home. Having a big desk and a bunch of computer in the bedroom is not exactly conducive to this.

I also made a decision to finish my “work” day around 6pm and then go into chill-out-and-make-dinner mode. The computer I do all my games work on is still in my bedroom, so in a sense, right now it's kind of something I'm only doing in my spare time, of which I do not have very much of. I'm trying that on for size. I'm finding myself trying to sneak in a few lines of code while I'm doing this other thing that I told myself I'd do before the day is done. It's interesting to zero in on my passion like that.

Hopefully, with some more organizing of things and maybe even some books and other things going off to other places in the next few days, enough space in the garage will clear up that I can start to really bring the games work into this garage/office space that I'm setting up, and some really cool shit will start to happen.

Sunday, June 10, 2012

square-lined moleskine

I ran an errand today, to find a notebook. I know that I have more games to design, and that I like to design things on graph paper, so it follows that these future games will be designed, at least initially, on some kind of graph paper. I've been using regular 8.5x11 graph paper that can be found at pretty much any place that sells office supplies. 

I thought I'd try doing my next game –  the one after the one I'm working on right now –  using a moleskine notebook. The thing that particularly strikes me about using a moleskine, the pocket-sized ones especially, is not just that it can be carried pretty much everywhere I go and requires no electricity to record things into, but the pages are each sized just a little bit larger than a typical touchscreen phone. This is enough room to design a fixed-view screen/scene/level at actual size while leaving a fair amount of margin for jotting down notes.

Why am I doing something related to my next game, which isn't even really my next project? For the same reason that I've bought a moleskine notebook to design it in –  these things take time to bake. Maybe a better baking analogy would be proofing –  the process of allowing the dough to rise in a warm, moist space before putting it in the oven. I have an idea for the game that I find very much to my liking and showing many signs of being a good game for me to make. I am pretty certain that I would like to do something not centered around procedural content, i.e. with static level layouts. I know from experience that those can take quite a bit of time to work out the right designs for.  In the case of mobile phone games, individual levels aren't supposed to take very long for the player to complete, so in order to have enough 'meat' to the game, there is a fairly high quantity of levels that seems to me is generally expected at any price point. For the game to be worth someone's $.99, and especially to be able to command a higher price than that, the quality of these levels is what must go up.

As I fully intend to render the best possible quality of service in my capacity of game designer in addition to the highest possible quantity, this means spending a good bit of time preproducing something on the order of 100–200 levels. The specific gameplay is something I have yet to prototype, but like I said I have an idea or two of what I'd like to do, and I'll make a prototype probably some time after I finish this maze-on-a-voxel game (voxels as a theme, maybe?), obviously because I'd like to stay focused on finishing what I've got going now before moving on to anything else. In the meantime, I can still occasionally divert myself and sort of pre-produce the pre-production by working out design language and layout conventions on paper, in a very conveniently sized notebooke.


Friday, June 8, 2012

rounding some corners

I've been quiet the past couple of days. Some of that is due to some amount of Skyrim playing.  Much of the rest of the time has been spent on a couple of key features in the maze game.

I wanted to add a surface distance heuristic to use for the A.I. and maybe object placement. I generated a list of test cases using PICT, wrote a quick perl script to add curly brackets and commas into the output, which I then pasted into some code to use as input for a fairly simple API-type test with some error checking and logging. This script got attached to a dummy object in a scene cloned from the one I use for the main game. Working with the data structure I use for “cube space” requires the object I use for the cube itself, which defines how big the cube is and thus how big the array for storing the generated data needs to be and all the edges and faces wrap around to each other. Distance is measured as a line wrapped around the surface of this cube. Spanning multiple sides of the cube is a less-than-simple special case of this that I would expect to occur quite frequently.

Since we work in real space, and are not trying to generate things in a certain way with the edges, the shared edges idea is completely absent from distance computation. Instead, I created a new delegate table, using the same component operations I refactored from the edge wrapping code used in maze generation, only here the wrapping is more explicitly from side X to side Y instead of from one type of edge to another. I do this because it is possible for this function to have to completely wrap around to the other side of the cube, so transitions from any one face to any other face need to be taken into account. What's more, wrapping around to the other side can be done in four possible directions, of which I select the shortest one. Depending on the direction taken, the wrapping may occur in one of two different ways –  the same opposite face wrapped vertically will appear inverted relative to if it were wrapped horizontally. This occurs very subtly in the game and is by design to kind of throw the player off a little bit –  the maze appears to shift but it's exactly the same, just from a different perspective.

So the distance function uses this table, which effectively “rotates” the destination face, if we're finding distance across sides, so that the local coordinate system for that face, when viewed as a flat, unwrapped linear space, lines up with the source face, making a straightforward linear distance computation possible. If the distance span is only to an adjacent face, the above transformation is performed and the distance is computed –  pretty simple. If the distance span is over to the other side of the cube –  two faces –  the same thing is done four times –  one in each of the four possible directions, and the minimum of these is returned.

It took a while to wrap my head around this, but the resulting ~60 lines of code (37 of these are the delegate table) came out pretty elegant looking. There were a few test failures that I had to work through and debug. These were relatively easy thanks to the prefactoring I had done using the 15–line rule and SLAP.

The next thing on my list was to make the randomly generated mazes a little more interesting to navigate and a bit more suitable for pac-man-esque player-chased-by-AI gameplay. What this means is there can be no dead ends, because this would complicate the “ghost” AI and would also create some nasty surprises for the player quite frequently. I want the player to have fun playing the game, while still being challenged. There may still be some nasty surprises lurking around a corner, but I'd like to make it as much as possible such that a skilled player can either deal with these or avoid them altogether.

The first approach I took was to just randomly pick some walls that had exactly two open spaces on either side and remove them. The chance of removing a wall could be adjusted from a public variable. This did work somewhat, but I still had dead ends, which suck. So, I wrote a small helper class to remove the dead ends. It literally goes through the generated maze, and if there's only one open adjacent space, it sees that as a dead end, and opens up one of the other adjacent walls. Problem solved. Occasionally there are some “loner spaces” that are the probably the result of some kind of bug I haven't yet tracked down in the maze generation code. These will slip through the dead end catcher, so I added a little extra code to also detect these in the same pass and just add an extra open space.

So now I've got randomly generated mazes with no dead ends. One other thing that I had in the original LD23 game that I haven't added yet is the rounded edges. Everything has just been solid cubes up to this point. I have what I think is a pretty straightforward solution. I'll see if I can implement that today and maybe also see if I can also do some mesh-optimization work later tonight. The actual A.I. code might be a little bit more involved. There's a couple of other key pieces to that I will have to figure out and implement solutions for. I'll also need to block out some time this weekend to go to town with the sound effects. I'm putting that off until I've got a more or less completely playable level to the game functioning. I'll probably also start soliciting people for beta testing around then, so feel free to e-mail me if you want to get in on that.

Tuesday, June 5, 2012

Controllers and Control

So, according to the twitters, there is some kind of conference going on this week. Something about the mainstream video game industry and selling stuff into “the channel” or some kind of archaic 20th century leftover bullshit.  Only now everyone is trying to be all “21st  century”, whatever that means. Apparently, it is supposed to mean using touchscreens and motion control and voice commands for everything.

I get that innovation is a naturally occurring thing (see this post), but this is getting a little bit ridiculous. The technology being invented supposedly for games does not seem to have been developed in close partnership with someone who actually has a background in making things fun, like, oh, say this.

Where are the first party games that were developed alongside these technologies? There aren't any. These were cooked up in research labs and shoved over to product teams to make a “return on investment” to keep the shareholders happy. And now they're being shoved over in consumers' general direction to “consume”.

To put a finer point on it – the technology of buttons and joysticks came long before Pong or Computer Space ever saw the light of day. The games played off the familiarity of the players as users of those input devices, effectively making them more playable.

When presented with an unfamiliar input device with no other practical use, the tendency is to think of it as a novelty. A one-trick pony, if you will (a term Steve Ballmer has used more than once to describe Google). At least Nintendo had the good smarts to make the WiiMote usable as a wireless gamepad that could be used to play people's favorite NES classics. Can you imagine the Wii doing nearly as well as it did if they hadn't?

Earlier, I was thinking of making this a “crystal ball” type post about what I project the future of such-and-such game technology will be like in 2, 4, and 10 years down the road, so, for the sake of scratching that itch:

2 years: Smart TVs coupled with ubiquitous handheld touchscreen devices –  whether they be phones or simple wifi-connected touch devices –  start to obsolete the traditional remote control, at least the gigantic ones with lots of buttons for this, that, and the other. It stands to reason that the computing capabilities of these smart TVs might also allow for some amount of gaming to be done directly from the TV itself, or via the Internet. The big difference here is that someone has figured out a way to do this all without any extra boxes. You just plug the TV into the wall, and maybe a cable hookup, and that's it –  you've got internet, TV, movies, games, everything. As I've said before, my guess is that Apple is working on something like this as the next atom bomb they'll drop on the tech industry.

4 years: Around this time is when the 10/10 rule will start to kick in with the touch-screen-centric smart phones. By this I mean they will be so ubiquitous and cheap that even the low-end budget phones that carriers practically give away in exchange for a service contract will be a touchscreen-enabled phone-enabled device with capabilities rivaling a netbook or a laptop of today. So, given this, I'm hoping the touchscreen latency problem will have been at least mitigated somewhat, to the point where it is actually possible to play Contra using a virtual gamepad on a touchscreen. Haptic feedback through a touchscreen will also become more of a norm, mitigating most of the physicality issues that people have with touchscreen-based virtual button interfaces. It may be possible at this point for a console game platform to actually obsolete the use of physical button gamepads.

10 years: Brain-Computer Interface – I remember seeing some of the earlier commercial attempts in this area in the 90s, with this doohicky you'd slip around your finger and it would sense the nerve impulses, or something. I never tried it, but I don't think it worked very well, because apparently it never really caught on. But we keep seeing this idea pop up again and again –  most popularly in The Matrix. Full-on virtual reality mindjacking is probably still another decade or few off, but not entirely out of the question for this century. What I'm talking about here is a solid first step toward that - enough to drive a video game or a UI on a screen a few feet away from the user.


Sunday, June 3, 2012

creativity happens

I have come to believe that creativity is not something that can be forced, and that it never needs to be, because it is everywhere, all the time. All we need to do is be able to listen to it and channel it through ourselves into our craft.

To quote the Tao Te Ching (translation: http://www.taoism.net/ttc/complete.htm):

The Tao that can be spoken is not the eternal Tao
The name that can be named is not the eternal name
The nameless is the origin of Heaven and Earth
The named is the mother of myriad things
Thus, constantly without desire, one observes its essence
Constantly with desire, one observes its manifestations
These two emerge together but differ in name
The unity is said to be the mystery
Mystery of mysteries, the door to all wonders

It's there, but it can't really be “named” –  there's no one set, specific method to making some creativity happen. It just happens. It's just there. If I grasp at it, it just evades me. If I pause for a minute and just let go, it becomes clear, as if it was there all along.



Saturday, June 2, 2012

ego, money, and free sex

On one hand, there is this egotistical desire that I, and I would guess that most other game designers, have - which is to see lots of other people enjoying the games that we make. It is satisfying to eat a bowl of soup which is very good –  it tastes good, it satisfies your hunger impulse, and it can also be very healthy and satisfying on a conscious level knowing that this is something that can help you live longer and function better. It is a level of magnitude more satisfying to make that really good bowl of soup –  even to just follow a recipe for really good soup –  to serve that to a group of people, especially people with whom you have some level of relationship with, who you have gratitude for, and seeing them genuinely enjoy the soup. Of course, along this same line of logic, (I'm no master soup chef, so I cannot claim to have experienced this, and am just going on logic here), it must be yet another order of magnitude more satisfying to invent a new soup, maybe even just a variation on an existing recipe, and see those same people enjoy that, perhaps even more.

On the other hand, everyone in this society is expected to “make a living”, by which is meant to earn some amount of monetary income such that they are able to live whatever lifestyle they choose to live. This in turn creates an exchange of goods and services, which, collectively, we call an “economy”. Sometimes, this economy is “good”, or “healthy” –  many people are doing well, and it's fairly easy to do well for oneself with an honest and consistent work ethic. Other times, this economy is “bad”, not healthy –  a few people may be doing really well, but the vast majority of people are living below what is considered “standard”.

What i think is interesting is that, by that definition, the world economy on the whole is probably not, and maybe never has been very good, even in times when it may have been very good for one country or another. I think it may not require a huge stretch of the imagination to consider that this may be a root cause for a lot of the conflict in the world, armed or otherwise. At this moment, I am of the opinion that the economy of the U.S., in both a monetary and a political sense, is not in a healthy state.

But I am no economist. I am simply someone who wants to get some bloody satisfaction in making some damn good video games for other people to play and enjoy, and to “make a living” doing just that. This means somehow getting paid for the act of making video games, and balancing that with the desire of having a lot of people enjoy playing those games. I think this is a commonality that I share with most of the people who call themselves game designers.

I think the differences start to arise when it comes to how we come to having this massive number of people enjoy our games, and how we decide to get paid for our work. I think it's very noble to give away one's work for free. It might not be at all profitable in most cases, but I've never heard of anyone faulting a game developer for giving away a game for free. I only ever see people taking issue with paying money to play a game. And a lot of the time there is no issue –  a person sees the value in playing the game, i.e. it looks cool and fun and whatnot, and is worth whatever price the developer or publisher or distributor or operator or whoever is asking. Money is exchanged for some enjoyment. Perhaps one of the oldest economic exchanges there is, if you believe what is said about “the oldest profession”. 

I like that analogy. Let's run with that. So, let's say a guy is walking down the street and happens across a prostitute who is offering free sex. Let's assume for the sake of example that she's clean and carries condoms, etc, so the risk of STDs, etc is very minimal. The guy, being a guy, does not turn down the offer of free sex, and follows her up to a bedroom in an apartment in a nearby building. They take their clothes off, and start having sex. Just as the guy is about to blow his load, she stops, and says “that will be $500”. The guy says “I don't have $500. I thought this was free.” “No, I said free sex, not a free orgasm.”

If you were that guy, would you be a little angry?


Friday, June 1, 2012

money vs ethics.. FIGHT!

I don't particularly like where I am living right now.  While I do get to maintain a fairly decent standard of living, there's quite a few things I could go on complaining about.  I'm certain that I will leave the second I am able to maintain a lifestyle somewhere else.  At the moment, though, it's really the only option I seem to have that allows me to keep working for myself while I build up my business independently. I hope to change these circumstances in the near future by designing, developing, and releasing a whole bunch of cool games into the market for people to download and play. Ideally, I'd like to stick to a straightforward business model of using the app store model to sell complete copies of each game, rather than the “futuristic” method of giving away part of a game and selling extra content to slap on top of the same game. Some people would have us believe that unless we give in to this model of doing business in games, that we're destined to all be not successful and left behind.

I'm going to go ahead and disagree with this notion, because “the future” is an illusion. What works for some other studios right now may work for them and work very well at that, and that's great. I think it is presumptuous to say that, because the selling-in-app model works for certain games and certain audiences, that it will work just as well for all games and all audiences, and that games that can't fit this mold shouldn't be made, or at least deserve some implied forthcoming ass-beating in the market, and audiences that don't like this model can suck it.

And just when we thought things couldn't get any more screw-the-customers-let's-make-moar-munney, along comes Diablo 3. In all fairness, I have not bought or played Diablo 3 just yet, and don't really have any plans to in the near future, so I may be a little ignorant here in just going off of what I've been hearing from other people. Some people seem to really like it, and, given that I'm still playing Skyrim for no really good reason other than “let's see what happens when I try a slightly different character”, I'd probably be in with this camp saying the game isn't all that bad. On the other hand, Skyrim does actually still let me play the game even when there's a server hiccup. I don't understand this idea of forcing people playing a single player game to be connected to the Internet at all times in order to play a game. I have to wonder if things have gone a little too far with this idea of doing this all in the name of enabling a “real money auction house” for in-game items, i.e. you paying real money to buy in-game items, in a game that you've already paid $60 for.. hello?

I'd like to think that the issue at hand is one of developers in general not innovating enough in the right areas. I'm pretty sure that I don't completely understand all of the problems in play. The issue that I have, though, is that it seems a bit dishonest and manipulative to “monetize” players' addictions –  or at least it seems moreso than selling an addictive experience and enabling players to play that to their hearts' content. While the impact on a person's life is highly debatable, I think it is pretty safe to say that there's a lot of value in an experience like that. And so coming along and tossing in a few strategically-placed mechanics that are there simply to harvest real money from those addiction.. I'd like to think it would cause people to think twice about playing the same game for hundreds of hours, but I know in my heart of hearts that it wouldn't, and they'd more than likely submissively pay up to play basically the same game they were playing ten years ago but with better graphics. I'm having some difficulty in seeing this practice as “ethical”.