Sunday, July 26, 2009

Tadaima

Ok, back to work.

Since consulting did not really pan out (I guess one needs to be more social then I am in order to make the connected needed to find work), yet I still have a craving for projects, I've decided I am going to take a long overdue new shot at some hobbyist work.

For a while I played around with writing some apps for EVE, specifically a python app that could read in both market dumps and the EVE database, plus a set of blueprints, then produce charts concerning total costs and total profits. It was fun, but rather limited.

I also wrote an app that you could scan through the database and find system that met certain criteria. For instance, find a system with stations, L4 agent, and no good refining.

But this was rather limited, so after playing some Farm Town on Facebook, I started thinking about Flash games. I've always wanted to try out this (ok, no longer 'emerging') technology but never got around to it.

So now I am exploring how this stuff works. The first thing I need to figure out is what tech to focus on. There are a whole bunch of techs used for doing stuff like this. Flex, Java, Silverlight, and AJAX.

Flex is well supported, and there are lots of 3rd party sites out there that host the files. Newgrounds, Albinoblacksheep, etc. It would also be something very new for me to learn.

Java I already know, but I am not sure how to handle hosting. It is also a pretty heavy technology and support seems to vary. While it would be the most 'comfortable' technology from a language perspective, I am not sure how comfortable I would be with it for actually writing something for other people to play.

Silverlight is still too Microsoft specific.

AJAX sounds like a cool idea, but it is a mix of techologies and I am not sure what the barrier to entry to would be.

There is also the question of server support. I would start with single player games, but I really like the idea of working on a multiplayer game (duh). I keep dreaming of making something in the veign of tradewars ^_^

Of course the scary part is, whatever I do, I will eventually need art. I need to learn computer art. Blark.

At the moment, I am leaning towards Flex due it having a low barrier to entry and cross platform support. This may change as I explore how it actually works.

Monday, August 18, 2008

Power Corrupts.

So yeah, I have not updated in quite some time. But now that things are calming down I am going to try to post a little more regularly. If nothing else I have a bunch of things to ramble about.

Time ran an article today that, while not directly related to, actually applies in a rather important way to software development.

Does Power Corrupt? Absolutely Not

The basic idea goes like this. Give someone power, and they care more about their job (since they feel more in control of it), and thus they are more efficient and make fewer mistakes. Take power away from people and they start messing up.

It was a blind study. Wide group of people split into 3 groups, each encouraged to think of themselves as dominant, submissive, and neutral. What the found was that comprehension and mistakes ended up being quite different between the groups.

It pointed to the idea that if you want people to work well, give them power over their own work. It also suggested that the roles people have ended up in are a cause rather then an effect.. that it isn't 'efficient people bubble to the top, inefficient sink' but instead the role you drop someone into actually effects how they preform.

So what does this have to do with software development? In writing software, building a game, etc, reducing mistakes and increasing emotional investment are absolutely vital to a product going well. You could easily say that the difference between a success and a failure in a design is directly related to how well people preform and how much investment they have in things going well. No amount of 'process' will overcome people who just don't care.

Looking back, I think this played a bigger role in why I left Merit then I had realized. I went from having significant power (small in the big scheme of course, but still it made me feel in control of things that I was involved in) to being shoved pretty far down the chain to the point I was, well, just programming. I think it REALLY effected my work. Looking at everything I did over the last year, I can't say I'm overly proud of any of it. I lost efficiency, I checked in more and more bad code, my designs got worse, it just stopped mattering. And that effected the whole product indirectly.

Friday, July 4, 2008

Bad Design - When 'it just works' Doesn't.

Bit of a rant, bit of an examination of what I consider a bad design. The Netflix Movie Player.

Now I can't speak to it's internal architecture of course, but I can talk about how it interacts with the user and the rest of the system a bit, and that is where it kinda fails.

So let us look at what is offered and how it is supposed to work. In theory you go to the netflix site, pick a movie, install an ActiveX control, and poof, you are up and running. No hassle, you have been walked through every step, you are up and going. If you have problems there are common 'faq' that you can access.

So where does this go horribly wrong?

For starters, it depends on some pretty specific bits of software being installed, Windows Media Player 11 and Internet Explorer 7. Not uncommon bits of software I will admit but not everyone has or run them. From a design perspective though it means that Netflix has tied their stack specifically into Windows full-chain DRM system which, lets face it, does little to stop pirates but does a lot to piss off the user. So part one is tieing to high-level APIs with known issues.

So lets say you get those apps onto your system (which eats about a gig or so) then you try to install the ActiveX control. Netflix is very helpful about how to install it assuming everything goes correctly... but if anything goes wrong, well, your options are pretty limited. The software has minimal introspection so it can't tell you why it failed, the FAQ really do not cover much, and, here is the important part... no support forum or support email address. You can call someone but that is pretty much your only option. That, I feel, is a big part of the 'bad design' of the entire process, poor options for customer support.

So lets say you get it installed. I managed to have it installed for a short while before it broke so I can still talk about this part. One of the first things it does is find out if you have enough drive space. The problem? It only checks C:. Many windows users are painfully aware of how the C drive tends to fill up rather unchecked. Figuring out what is eating up space in windows can be an exercise in futility (no equivalent of 'du -s') so many users will create 'clean' partitions or even second drives intended for large downloads and media. In my case my C: is about 8 Gig (7 of which is filled with just the OS and things that can not control where they install, such as IE and WMP), but I have 8GB of D: for temp files and 200GB of F: for things I actually install.

Unfortunately, the player doesn't have an option for controlling where it downloads things. In fact, it has no options what so ever. It doesn't even seem to have registry entries to control where things go. To be fair neither does IE, but a lot of people are unhappy with IE's design for just such reasons. So this is the other big design flaw.. lack of even basic user control of options, or more specifically, the design decision that the user should not have to have any options in the first place... 'it just works'.

Annoyingly enough, one reboot later Netflix couldn't detect their own player and attempts to reinstall it keep generating a "A network error occurred while attempting to read from the file: C:\ .... NF_Movie_Player_z11.msi" error, which gets back to the lack of introspection/debugging. When it fails, there is nothing you can do. So I never actually got to the point where I could actually PLAY a movie, and thus can not speak to how well it behaves from there.

In short, I do not think I will ever be using this downloadable service.

Monday, May 19, 2008

Phun

One thing I enjoy is looking through the myriad of little flash games you can find on newgrounds/albinoblacksheep/etc. So many little ideas condensed into their simplest form to fit into the system requirements of a downloadable flash object.

Something I found today though was a slightly different beast. It was only a youtube demo of the program, but the idea it showed had some interesting game potential. It is called "Phun", from
UmeƄ University. It isn't a game exactly, more of a sandbox. A physics sandbox to be exact. It is a bit like those 'animator vs animated' shorts except interactive and real time. You draw stuff, the laws of physics apply to the objects, stuff happens. Quite sophisticated actually.. I would love to poke through and see how they made it work.

But on to the game angle. Watching the examples I couldn't help think about the game potential of such an engine. Sure there are lots of physics engines out there, many of them capable of far more complex things. But this was was geared twoards the player interacting with the engine rather then the artist+programmer. This has all sorts of potential for problem solving games.

The example that came to mind was the simple artillery game (a favorite of mine). But in this case not only would you have to aim and such, but actually build the mechanism from primitives. Or a racing game where you have to design the car. Lots of potential there ^_^

Friday, April 25, 2008

Meta-thinking and Emergent Behavior

Ok, taking a shot at writing something themed for Blogs of the Round Table.

A short while ago I decided to grab an xbox360 finally. Of course I went with one of the 'hot' games, Halo3. I've been wanting a FPS again for a while and I've been through Pandemic's Mercenaries way, way too many times lately. So I started Halo3 and couldn't help looking at it in terms of the games I usually play and wondering what did, and didn't work for me.

First I have to say, I am enjoying the game. It is visually stunning, the AI is actually quite good, and it is mindless fun that I can relax too. Having said that, I also found it a very disappointing game in it's simplicity and linearity. For any given situation is was always fairly clear what the 'solution' was. If the situation was unusual then the needed weapon would happen to be nearby. Often there was only one way to do something,.. each area had one entrance and one exit, and clues were everywhere regarding which one you should be moving towards. There was little to no state-fulness between areas (weapons and vehicles reset back to designer intention), etc etc.

Compare this to a military sandbox like Mercenaries.. no real entrance/exits, multiple solutions to given problems, flexibility for un-anticipated solutions, state-fullness between missions so that you can prepare and keep things that are useful, etc etc. This usually works pretty well for me.

Yet, when I think about it, I can't stand 'puzzle games'. When I say puzzle game I am not necessary meaning mini-games where you have to solve some explicit puzzle. I mean any game where the designer integrates a problem to be solved... which actually brings me to my main point. Meta-thinking.

When one designs a game, there is always some meta-thinking involved. The designer HAS to think about how the player will interact with the world. For instance the designer probably wants to think about what they player would expect the left arrow to do when moving and thus move accordingly. This is just part of good interface design.

Beyond that though, designers often try to design 'puzzles' that involve the designer trying to guess how the player will see the puzzle, and more importantly the player trying to guess what the designer was thinking the player would think. Essentially from the player's perspective you have to figure out what the designer was thinking.

Now, in the real world when you are presented with a problem it usually has not been specifically 'designed', thus trying to solve it involves a good model of the real world and such. In a virtual (highly simplified and artificial) world this doesn't work. Which gets me to part (2) of my topic, emergent behavior.

Within this context, emergent behavior is what you get when you set up the virtual world well enough that the player can apply general-purpose problem solving to a situation rather then guessing about the designer's pre-conceived solution. This is where the games that tend to work well for me diverge from the ones that don't. Rather then having one or two solutions baked in, these games provide a sandbox in which the designer can challenge the player but does not have much control over how the problem is solved and thus it starts feeling more 'real world' to me.

It is never perfect of course. Even the most flexible games still represent a subset of the real world thus one still has to think about what the designer decided to include, how they implemented it, and how it is balanced.

Now I admit part of this is humans are pretty difficult for me to understand, thus attempting to meta-think someone who's background and assumptions I don't know is generally an exercise in frustration rather then enjoyment.

Monday, April 21, 2008

Nothing Ventured

A few weeks ago I had decided to take the plunge and apply at Three Rings since they were opening up a location in Philly. I didn't consider my chances all that good but went for it anyway. They presented a fascinating opportunity if things panned out so it would have been silly of me to not at least try for it.

Today I received the official 'we are going to pass' email. Not surprising but a bit disappointing.

I decided to actually bluntly ask Three Rings where I had gone wrong. Probably a faux pas I know but I never get any feedback on 'why' from various companies and these peeps seem informal enough to maybe actually be willing to say something. That and it would be nice to keep the dialogue open in case something else came up in the future.

Still, even without getting the job the experience it'self was probably worth it. I got to play in their development environment, learned a new language, and worked with a network programming paradigm that was new to me. It was interesting to see how in some ways their network API was way ahead of what we use, and in other ways so far behind. So I learned stuff.

Saturday, April 19, 2008

Duke Nuk'em. Horrible for interesting reasons

Last night I got a craving for mindless FPS. Not a type of game I have many of I'm afraid. I usually just play Mercenaries when I want thing to go 'splode but I had just finished running through it twice the other day, so that wasn't going to cut it.

So I poke through my collection of games and find 'Duke Nukem, Time to Kill', a PS1 game from years back. I had forgotten just how horrible it was. But horrible for what I think are interesting reasons.

Time to Kill was made in the shadow of Doom. Doom was a fairly revolutionary (in the iterative sense) game,.. it had a highly efficient engine, lots of variety, a good pseudo-3d environment, good controls with lots of capabilities without overwhelming the person, and smooth movement.

Time to Kill seemed to try to take this formula expand upon it and bring in things that, I am guessing at the time, conventional wisdom felt would be 'better'. So it added an inventory (which was clunky access and use), step based movement instead of phantom-slidy (which result in coarse grained control that made maneuvering difficult), the ability to put away your gun and do other things like climb (which was more realistic perhaps but added unnecessary and confusing state-fulness), and a more 3D engine that followed Doom's pseudo 'everything on one plane' 3D but added multiple slices (or something) so you could climb around. It felt like a bad comprise.

The end result? An utterly unplayable game that felt like it was designed by a few modders who looked at doom and asked 'wouldn't it be cool if?' but failed to integrate everything into a balanced game.

At least that is my take ^_^

Ultimate solution? I finally bought an xbox360 and a copy of Halo3,.. which I have a different set of complaints about having come from Mercenaries ^_^ but that is a different rant.