Archive for September, 2005

Hackfest 110 Mortem

Thursday, September 29th, 2005

Hackfest 110 – Sept 28 2005 7:30 PM

titillating facts:
Ben likes Firefly because it’s Sci-Fi, but they don’t explain any of it.
Ben hates the Magnetic Fields. But likes to dance to other pop music.
You can see the Octane music list from iTunes.
dmesg is one way to figure out what Linux distro a system is running.
/etc/redhat-dist is another way on machines that run some RedHat.

Since Last Time:
Ben-
Autograder generator done, TAUI underway. Cannot view/edit results.
Vinny-
Discovered physics abstraction wrapper – GangstaWrapper (like Ogre abstracts 3d libs) abstracts the underlying physics engine.
Commotion into source control.
Graham-
Nothing on Mused. Setup svn for SWIMM but it’s not working.
Titus-
Found CDT, a plugin that adds C[++] support to Eclipse.
Some Wine development. Trying to get the Newsleecher installer working.
Right now, the installer doesn’t work. It doesn’t let you create directories. The installer is written in Delphi, and it seems to be some sort of win32 problem involving Delphi code.

Plans:
Ben-
Reorganize build structure to remove an extra module and make it simpler.
Get test editor working.
Vinny-
Do something basic in Ogre using Commotion, like basic geometry.
Graham-
Fix the problem with SVN.
Get my file speedup stuff working, which might be hard because I haven’t touched it in weeks.
Titus-
Finish reading EMF (Eclipse Modeling Framework) chapter 1-5.
Stephen-
Doing homework and teaching the graphics gospel.

Realities:
Ben-
Reorganized build structure. Cleaned up ties together.
Vinny-
Reduced 250,000 errors to 2 (bizarre objC error). Basic Ogre setup hacked into Commotion, but not quite.
Graham-
svn now authenticating, rejecting everybody.
Titus-
I messed around with CDT today, and just worked with the Eclipse environment some more. I think it would be helpful to actually be an expert on the environment, as it’s hard to both program for it and learn how it works (from a user perspective) at the same time.

Component: Agent AI

Wednesday, September 28th, 2005

The Agent AI is the focus of the simulation. Each character should seem to have a life of their own, and the characters collectively should act as a system. Aspects of this are:


Disposition


A Disposition, in this case, is a relationship between the character and something else: another character, a place,an activity, an object, or the player. It represents how much a character likes or dislikes that thing. Simply a reference and a quantity are all that is required for a disposition. The character will form these as that character interacts with things and they will effect the character’s behavior.

Knowledge


The character can “see” all that goes on in the character’s own “cell.” These are added to characters “memory”- a list of events that the character observes. There are enumerably many actions that a character or the player may take. Each action has a negative or positive effect on whatever entity the action is performed on. In addition, the character may have a “disposition” toward whatever object the action is performed against. This effects how the character interprets ths info.
So when a character observes an event, the recorded “memory” includes the character performing the action, the action itself, the object that is the target and the computed reaction, which is how much the character likes or dislikes the action.

Communication


Each character can share his information with others. What the character decides to talk about depends on the importance of the event, computed by how recent the event is and how it affected the character. Each character knows the difference between what they saw and what they heard. Characters will talk to each other as well as the player.

Scheduling


Each character has their favorite activities and their favorite places, but they will not simply do their favorite thing all day and night. The compulsion to do an activity will decrease as the character is doing that activity. They will grow “bored” with what they are doing and go on to something else. Here, a boring equilibrium should not be reached. Randomness and in-game events will change the character’s priorities.

Personality


The characters personality is determined by a series of metrics as suggested in the paper “Personality in Computer Characters” by Daniel Rousseau. Each character’s behavior will be affected by these.

Goals and Challenges:

One goal here is to avoid equilibrium for the sake of extremes. The society should not have a predictable daily routine and there will be several factors to keep this from happening. Primarily, the player will have great power to stir things up. The player is an element of the system that is not under computer control, so the player’s behavior is not likely to be systematic. In addition random or scripted disasters may befall the town. Overall, randomness will be introduced into every decission a character makes.

Hackfest 110

Wednesday, September 28th, 2005

Come to Octane and hack with us!

Road Atlanta – Microsoft Forza Motorsport vs Reality

Wednesday, September 28th, 2005

For people interested in computer racing, I found a video on Google Video of the Popular Science bringing Forza head to head with reality on the Road Atlanta track.  Some MS developers, Popular Science crew, and Panoz Motorsports (www.panozmotorsports.com) guys compare, side by side, laps on the console to laps in reality captured with hood mounted cameras.

http://video.google.com/videoplay?docid=-4261577868516679739&q=%22road+atlanta%22

Why Engine Games Suck, or, Why Game Design is About Rules

Tuesday, September 27th, 2005

What is a game?

[game] noun: a form of play or sport, esp. a competitive
    one played according to rules and decided by skill, strength, or luck (Oxford English Dictionary)

 
Games are fun – thats why kids play them.  Games are about exploring the possibilities of your surroundings, devising a limited set of rules, and then interacting with your environment as limited by those rules.  A ball, some people, and a flat surface can turn into golf, football, soccer, kickball, baseball, or basketball.  All of these share the same basic elements, but otherwise differ widely due to the application of a (generally) small set of rules.

Engines are games without rules.  They are generally based on other rules that are too boring for us to care about, like the rules of physics, sound, or computers (graphics engines, sound engines, etc).  Sometimes, engines are made that try to make creating games easier – these are called game engines.  They usually tie together all the other engines that you might want to use, and provide a framework to base a game upon.  Some game engines are the Quake, Quake 3, and Doom 3 – any of these can be purchased, so that you can write a game using them.

Sometimes, game engines are released as games – like Doom, and Quake 3.  These games tend to get a lot of hype – look at the smooth rendering and high framerates of Quake 3, or the 2.5D environment simulated in real time in Doom.  Unfortunately, these games tend to have short shelf lives.  Doom got the best run of this, due in part to factors outside of gameplay: being the first game massively distributed over the internet, and the relative adolescence of computer games in general.  Ultimately, they tend to have a short shelf life once the hype wears off.

Ground breaking engine games are tough, and then generaly come out poorly.  I think the reason for this is the same reason as any ground breaking software development project: breaking new ground requires research, experimentation, and analysis of your experiment.  Once you’ve figured out the lay of the land that you have recently created, you can now devise a structured environment to play in, ie a game.  Games will always be about imposing rules, because rules are the essence of games.

Games that have great engines

doom, doom 2, doom 3
quake (1,2,3)
grand theft auto Vice City
sim city

 
Poor Games Good Games
doom                   doom 2
quake quake2
quake3 Sim City
doom 3 GTA Vice City

            

Used New Engine Used an Existing Engine
doom                   doom 2
quake quake2
quake3 GTA Vice City
doom 3
Sim City  

      
    Whats different with Sim City?  It was written to be a simulation of
    demographic forces, and was later turned into a game.  It also took
    years to develop.

Component: Map

Monday, September 26th, 2005

The map represents the city in which the game takes place. It will comprise all of the physical objects in the game.

structure:



Sections


the map is divided into sections. Each section is a large visible area. One section is loaded into memory at a time, this being the section where the player resides. The current section has the focus for computations for character activity.


Cells


The Section is divided into arbitrary quanta called cells. Each cell represents the perceptural area for each character inside it. Each character can “see objects in the cell. Nothing else exists except what the character “remembers.”

Objects


Each cell can contain a number of objects. An object is any physical thing in the environment. Objects can include buildings, walls, trees, and so on. The cell also has references to moveable items and characters that are inside. An object has a reference to a mesh and a texture for drawing. Also, whether the object is solid or not is stored.

Suckerville: the Game (miniature agent-based society simulator toy)

Monday, September 26th, 2005

Suckerville: the Game (early planning phase) is based on the comics I write. A few of which are at my comics page. I thought it would be neat to create a game with these characters where you could interact with them. This idea transformed into a lofty concept for a complex(-ish) society simulator. This game is single player and therefore all of the society, except for the players character, are simulated.

This game is loosely inspired by the Nintendo’s “Animal Crossing.” I saw my brother playig it one day and noticed his character had a shovel. I asked if he could hit people on the head with it, for a hilarious cartoony response. The answer was no, unfortunately. I thought I’d make the game like this except you could hit people on the head with a shovel. Naturally this would only be fun If they reacted to what you did, but how far could this go? The problem with the characters in Animal Crossing is that everything they do is tightly scripted. How can characters made to be dynamic. Many game programmers dream of creating emergent behavior in their dynamic content. Is this even possible?

Imagine walking around a city of ridiculous cartoon characters. They talk to you and to each other. They tell you what they like and dislike. They tell you that they don’t like it when you hit them with a shovel. They don’t like it when Charlie down the block hits them with a shovel and ask if maybe you could do a favor and hit him with a shovel. And the shovel smacking is only one of the many things you’ll be able to do. The point is, the characters “know what you are doing and they “remember”, and this affects the way they behave towards you. These characters are not like the typical video game characters that sit around helplessly while you run their errends either. They can do all of the same things you can do. And they can talk to each other as well as you.

The original idea is based around concepts

  1. Each character in the game can do anything the player can do. They do not sit around and wait for you to talk to them, but rather they have a simulated daily routine.
  2. Each character can like or dislike objects, characters, places or actions. Each can observe what any other character does, including the player, within their vision and decide whether they like or dislike what is happening.
  3. Characters can talk to one another and spread their information.
  4. Goofy stuff should happen often. The game should be dynamic and things should change over time. The general feel of the game is one of mayhem and humorous mischief.
Goals and Challenges

To make the game as dynamic as possible. In a game each character may become your friend or your enemy. Maybe you’ll see them a lot, maybe very little. Where are your favorite places? Can the game seem different every time? How can you make the game elements random but not seem like noise? Can the decisions a player makes, make a big impact in the world?
They characters should be complex enough to be interesting. Each character should seem different from the others, and should seem to have a life of their own. Their personality and personal experience should affect what they decide to do. The player should get a sense that there is a whole world around him and that much goes on behind his back.
How far does their AI model need to go at simulating their personality? Is it possible to make the model complex enough so that they seem life-like? Can a general behavior model allow each character to have quirks? What sort of group behavior will emerge?
The player should feel free to do a variety of things. No game will allow a player to do everything, but the player should be able to react to the people and objects in the world in a variety of ways.
The game should be funny. Is it possible to create emergent comedy?

Hackfest 101 Postmortem

Thursday, September 22nd, 2005

–  Since Last hackday
    –  Luke
        –  Started porting eclipse SAP development tools to Linux
            –  Replaced windows native libraries
    –  Vinny
        –  Commotion
            –  Abstracted out all of my application singletons
            –  Got everything working again
            –  Some scenegraph research, ogre3d is the way to go
                –  Stackless python and continuations…
                      continuations are cool and powerful
–  Today’s Plans
    –  Luke
        –  Working on browser component for SAP plugin
    –  Vinny
        –  lisp hacking – implementing while
–  Today’s Reality
    –  Luke
        –  learned a little about the browser
            –  got the mozilla to integrate
            –  still trying to get it to load inside eclipse
            –  fixed a few more IE specific quirks
        –  spent some time trying to fix dhcp again
    –  Vinny
        –  lisp – wrote while as a macro
            –  (defmacro while (condition &rest codeblock)
                      `(loop (if (not ,condition) (return)) (do
                  (and),codeblock)))

FCK your editor

Tuesday, September 20th, 2005

New GUI editor – FCKeditor. Hopefully this is an improvement over HTMLarea/Xinha – play with it, let me know.

Hack fest 101

Tuesday, September 20th, 2005

This week, I am putting aside my standard project to work on hacking!  I haven’t played with lisp in a long time (and then only scheme), so I’m putting some of my perceptions of lisp to the test.  As usual, the event is at your local Caffeine HQ, Octane.