• ### Blog Entries

• entries
12
21
• views
11622

With member benefits!

## It has been awhile

Yeah. It has certainly been awhile. I've been working on stuff just wasn't in the mood for posting until HopeDagger gave me a PM telling me to update my journal. I do pay for this thing so the least I could do is bore the readers out there with wonderful updates about .... nothing.

Yep. That project got dropped. That happened for two reasons:

1. Poor Planning. Once again it is so important to actually plan out what you're going to do in your game before making an engine. I definitely over engineered the engine to make it as robust as possible and that sucked time out of the actual game development. Then once I was actually ready to add a functionality to the game, I pretty much had to break what I generalized in my engine design to get that functionality working. Deep inheritance trees (A table is a prop, which is a physics object, which is a game object, which has a mesh, which has animation, which has ...) and poor messaging between game objects really ruined it for me.

2. It was just going to be a clone in the end. In the end it was really just going to be a better version of Diner Dash, with RPG elements. I didn't think I could be happy if I made something that lived in the shadow of a different game or being labeled as a clone. Especially since the branding of diner games is so strong with the Diner Dash brand, I became less thrilled with my progress and more worried about the outcome.

But you know, many projects are canceled and started again so maybe Tangent will make a comeback when I'm confident enough that I can provide an alternative experience to the customer catering genre of games that would appeal to the hardcore people.

So what are you working on now?

I took a month off from programming after a disappointing cancelation of my last project to collect my thoughts/motivations and started to play some other games for inspiration and continued to read development journals for insight on how to do things right.

In the past 2 weeks I've dusted off my own engine and rewrote it from the ground up to be a component-based object model instead of an inheritance model. At first it was a pain to get everything set up again due to all of the querying that the components have to do: i.e, A physics component has to know the dimensions of the model before it can move the collision box every frame. So I assigned each component to have a mComponentName member variable and then just have a component query the component list of an object if it has reference something else. That way, I can plug and play components.

My new project I'm very thrilled about. I can describe it as Asteroids/Geometry Wars meets Hunt the Wumpus. It should be good times.

That and Bioshock and Persona 3 have completely STOLEN MY FREE TIME.

## Bring it!

360 goodness
So this sunday I finally got myself a 360. And of course, I got Gears of War to go along with it. I had already beaten it at a friends house, but I loved that game so much that I had to get it myself.

And of course, I wanted the achievement points as well. Not that I'm an achievement point whore or something, I just think it's a brilliant system of encouraging gamers to do their best. Plus, I'm really enjoying the community and connectivity of this new generation of gaming consoles. I don't think I'll get rid of my PS2 for a while though.

Mainly because of Final Fantasy Tactics.

Everyone has one game that they always go fall back to when some other game in that same genre blows. Whenever I try a new strategy RPG, I just realize it's shit and then I go back to playing tactics. After playing Doom 3 what did I do? Went back to playing real Doom.

My Fallbacks:
Strategy: Final Fantasy Tactics (The job system is a requirement for a strategy game IMHO)
First Person Shooters: Doom (20 imps, 10 shells ... whatcha' gonna do?)
Puzzles: Super Puzzle Fighter (Super Tug-of-war battles, with strategy!)
RPG: Final Fantasy VII (Growing Materia is like crack to me)
Fighting: Capcom vs Snk 2 ( Like the 6 different "grooves" you can fight with)
I don't play Sports or Racing games.

Tangent

So I spent most of this week wresting with default model viewing directions and allowing the character face where they are actually moving. At first I had big problems with this implementation. My movement model is restricted to the axis'. Moving up would be moving in the positive Z direction, and left would be in the negative X direction. My problem was letting netwon know the angle between the direction that the model was facing and the intended direction of travel. Once I had that angle stuff figured out, I forgot to normalize my intended direction vector so the player was facing in strange directions when not moving up and down.

I had some really overly complicated algorithm using a lot of quaternions but then I finally came to this simple way to make an actor face where they are moving:

	//Get this actor's current direction and normalize it	Quaternion CurrentHeading = orientation;	CurrentHeading.normalise(); 	//Multiply it by the default facing direction to get the currently facing vector	Vector3 VecCurrent = CurrentHeading * a->getFacing(); 	//Then get the last direction we wanted to move in.	//So that when the player taps a key, this will automatically turn the actor into the last direction	//inuptted	Vector3 VecDesired = mLastDirection.normalisedCopy();	//Do a cross product to get the upvector, this will be the angle we apply the torque to	Vector3 CrossAxis = VecCurrent.crossProduct(VecDesired).normalisedCopy();	//Get the steering angle between the current vector and the desired vector	Radian SteerAngle = Math::ACos(VecCurrent.dotProduct(VecDesired)); 	//Get the amount of time that passed since the last timestep	//Real fElapsed = body->getWorld()->getTimeStep();	//Calculate the torque needed to turn in that direction	Vector3 thetorque = ((CrossAxis * SteerAngle.valueDegrees() * 20.0f) - (body->getOmega() * 100.0f));	//Add the torque to the physical body	body->addTorque(Vector3(0.0f, thetorque.y, 0.0f));

Later on, I'll have to add movement that's not just relative to the axis', but maybe to the camera as well. But at least I got a good start on movement.

## Stiil alive!

Yeah, I'm still alive. I'm just busy with school and whatnot. But now that it's spring break for me, it's time to program like a MADMAN. After all, programming is what I think about doing when I'm doing other school related stuff.

Blender

You know how it is. You just get so sick of placement, prototype stand-in cubes that you can't stand it anymore. Without any visual indication of progress it felt like I was spinning my wheels setting up an engine and not a game. It's difficult for me to prioritize things I need to get implemented for the game and not get bored trying or simply running out of time.

That's how I've felt this past week, so I spent time learning how to use Blender. I tried to pick it up about a year ago and really hated it. I dabbled into the Milkshape a little bit, but then decided to try out Blender again. It's amazing what a few versions can do to a modeling program. Now editing in it feels so fun and natural to me, I find myself doing blender shortcuts in other programs. Or maybe that's my ridiculously good muscle memory kicking in again .. hrrm.

One of the major problems that I had was setting up a scale between Blender and Ogre. I had a lot of old prop models that were all different scales and I just modified a meta file that I used for loading them to set a proper scale. It just got plain silly when I was giving models a scale of just to make it look a decent size. I went with a unit of 1 in blender equaling 1 in Ogre - 1 being a meter in size in scale. Amazingly enough after making this change, the physics system seemed to go a little bit better. Lower numbers = GOOD :D.

The second problem that I had in blender was dealing with tiling textures. It's a pain in the ass to do stuff in blender when you're doing stuff like this for all of the walls:

I guess in due time, I'll develop a method for things to look correct the first time around. But for now I'm happy with what I've accomplished so far.

Tangent!

Basically what I've done since the last time I updated this journal was I implemented a AI state machines, and the ability for an employee to walk up to a customer press a button (or whatever the user bound the ACTION_OK to - it could even be a mouse axis .. but that's crazy) and have that customer follow them around forever. This was much fun to debug, because sometimes the customer would shove the employer around until I forced it to have a 1 meter of respect around the player.

I made the table and chairs, and the new "testing" room in blender. I know the textures a bit plain for the tables, but I like the floor texture :). The white brick to the left is something to help me with the scale of the restaurant as I add more things to it in blender. I don't have a real idea of what I want the restaurant to look like, but I do have concept art that I made 10 months ago:

I'll do my best to make it look like that - without the smudges of course.

The next thing that I need to do is set up a Table Object so that when I approach a table after grabbing a customer, they'll take a random available seat and pretend to place an order. That and I want to make a new model to replace that damn ninja.

I still need to replace my LuaPlus implementation with a LuaBind one instead, I'm afraid of doing that because it will break the nice shell that I have of objects loading in script, etc, etc. It should be for the best though. Plus I want to get dialogue trees going in this soon :)

## Why, hello there!

Happy 2007 (Late I know)

Yes yes. Happy new year and all of that jazz. You've heard it all before. And I'm late saying this stuff. Yeah. Did you make your new years resolutions? A more important questions is .. are you keeping it?

I only have three resolutions:
1. Complete a game this year. Then again everyone here has that goal.
2. Completely fill out my sketchbook before the beginning of next year. My sketchbook is about 500 pages big. So if I at least do two pages worth of sketches a day it will be filled, and hopefully .. my drawing level will increase by seven! To assist my will to draw frequently I am starting up a webcomic that I will update at least once a week.
3. Create more of a presence online and stop being a lurker everywhere I go. Become a producer of content and not a consumer, ya know?

Great games experiment

Yeah. I signed up for an account. It's definately a good way for developers to network with each other. I just don't like the excessive presence of Garagegames everywhere on the site. Not that I have anything against Garagegames, but it feels they kinda have a large shadow looming over the entire site. I dunno, it's hard to explain, but I hope the "shadow" shrinks as more people hop on.

That or they'll force torque ads down my throat [lol]. Is there a gamedev.net group that I can join on there?

[Edit: Then again ... perhaps I should use my REAL NAME. Hrrmm ...]
[Edit2: Requested a change to use my real name. What I have to ask permission to do this? [headshake]]

Tangent!

Well school sort of took over my life in November-December. On the other hand I had my best semester of college yet! Though, I've been neglecting my project and I decided to get back into it this weekend. My first order of business was to update my Ogre to the latest one that they had in their CVS. By doing that it pretty much broke everything that I had working before. I spent all of Saturday just getting things running again.

Right now I'm still tangoing with the the Action Mapping stuff. I currently have keyboard, mouse, and joysticks input all working peachy. I just have to abstract what i read from these devices, check the actionmap and convert them into actions that the game can understand.

The sad part is that originally I didn't want to do this so soon because I really wanted to prototype the gameplay to find out if it is what I really wanted to do with this project. But, I realized that I would have to do this Actionmap stuff eventually anyway so I had might as well get it over with now right?

## Chances and Choices

Actors and Action

So today I was implementing a bit of AI for my actors. I have a state machine set up in my AiActorController class. The actor class polls the controller class on what it should be doing (moving in a direction, fleeing, jumping, etc). I also made an InputActorController class to handle input from the player. Right now the input controller takes only specific keys and converts them into action commands (ACTION_MOVEUP, ACTION_SPRINT, etc) because I haven't setup my ActionMapper yet.

I'm delaying on the ActionMapper because I'm trying to find a good GUI to use. I feel that CEGUI is overkill, so I might just roll out my own or find a simple one that someone made and modify that. But of course, I hope that I don't make a wrong CHOICE in doing that.

I love Lua .. I really do

Speaking of wrong choices, using LuaPlus was probably a bad choice. While I was implementing the AI Controller I had an actor chase my character around WAY WAY too fast and because of newton physics I was realistically getting pushed around. It was pretty cool. It was just a simple pursuit function (if player.x > my.x then my.x = my.x + 1).

Then I decided to make a scripting command to set the movement speed. I used inheritance to let an Employee object inherits from an Actor Object that inherits a MovableObject ... Object that has the setMoveSpeed() function. LuaPlus threw a fit when I tried to bind it because it didn't know if I was talking about Employee::setMoveSpeed .. or the base MoveableObject::setMoveSpeed. After doing some googling research, I realized that LuaPlus didn't have support for inheritance .. and I would have to implement functions such as setNameLua() so that I could call setName() in a script. I think that kind of function duplication is a bit stupid.

Now I'm stuck in a hard place. I have to undo all of my work in LuaPlus, because I don't want to duplicate most of my useful functions so that I can expose them to the scripts. I'm thinking of going for LuaBind because I know that can support inheritance. So .. wish me luck I guess.

Sometimes I wish I was working on a space shooter or something ;)

## It has been awhile!

Hey. I'm still alive an kickin'. I'm not using my gamedev.net subscription to it's fullest however - but I guess not having a lot of time to dedicate to personal projects due to college is understandable. Right?
My new theme!

Oh and I did some things with the templates on my journal? You like? It took me around 2 hours of messing around with dreamweaver and learning how gamedev does their templates. I got my inspiration from Trapper Zoid and Mushu's good looking journals. Hopefully, the work that I put into it today will encourage me to post more updates.

Plus, CSS is just awesome! Except .. for when you're dealing with IE. Speaking of internet browsers I'm really loving Firefox 2.0. I like how it has some of the best extensions (Session saver, X in all tabs, etc) built right into it! Plus the spell checker in text boxes is a major help :)

Game Development

Last time I was super pissed at Lua. Last week sometime I had some kind of revelation with the coroutines and I now have something fairly decent working. It took a lot of digging in the lua mailing lists and various forums and books to find out how exactly they work and how to incorporate them into my project.

So here is the code:

scheduler.lua
Scheduler = {}function Scheduler:init()	self.actions = {}endfunction Scheduler:asScript(obj)	if type(obj) == "thread" then		return obj	elseif type(obj) == "function" then		return coroutine.create(obj)	elseif type(obj) == "table" then		return coroutine.create(function() obj() end)	else		return coroutine.create(function() end)	endendfunction Scheduler:register(condition, script)	table.insert(		self.actions, 		{cond=condition, script=self:asScript(script)}		)endfunction Scheduler:start(script)	self:register(true,script)endfunction Scheduler:activate(script) 	local status,nextCond = coroutine.resume(script)	if status then		if nextCond ~= nil then			self:register(nextCond, script)		end	endendfunction Scheduler:step()	for i, rule in ipairs(self.actions) do		if rule.cond==true or rule.cond() then			table.remove(self.actions,i)			self:activate(rule.script)			return true		end	end	return falseendfunction Scheduler:run()	if table.getn(self.actions) > 0 then		self:step()	endend

It is basically a scheduler that steps through coroutines and then checks a condition to see if it is time to rerun the script.

initstate.lua
function wait(seconds)	local wo = Game:wait(seconds)	local txt = "Eventid: " .. wo	Game:logMessage(txt) 	coroutine.yield(		function() return Game:checkEvent(wo) end)endfunction script1()	Game:logMessage("In Script 1!")	wait(2);	Game:logMessage("What, out of it!")endfunction script2()	   for i=0,5 do 		Game:logMessage("In script 2 .. will loop 5 times!")		wait(3)	   endend Scheduler:init() Scheduler:start(script1) Scheduler:start(script2) Scheduler:run()

And then in this piece of lua code. I have in my wait function a C++ call that will tell my event manager to create a timed event (Game:wait(seconds)) to wait for so many seconds, and then I yield the coroutine and then pass a condition. The Game:Checkevent(wo) function is another C++ call that will poll my Event Manager to see if that event happened or not. So far an Event can only be a passing of time, but I plan on extending it so that it could be when an object is in a certain location, or a button is pressed, or a door is opened, or even when another event completed.

Anyway, the next two functions are two scripts, and then the block of code after that initializes the scheduler and adds the two scripts to it's internal table (or queue) and then starts running them both at the same time. So basically I can have two actors just walk around and do their own thing. Pretty damn cool.

Yeah. The game is still moving along. No, that's a lie. It's moving at a slooow speed. I work on it furiously for about 5-6 hours, and then I can't get back to it for like another week. Not the way I would like to be making it.

Today I just finished reorganizing my code so that everything is in gameplay states (intro state, main menu state, options state, playing state, credits state, etc) and this made it considerably easier to read. What I'm working on now is action mapping.

Right now I have an Actor class and an Actor Controller class. And the Actor will poll it's controller class for information on what to do whether it be jumping or moving forward or serving a customer, etc. The controller can be Input driven, or Network or AI driven. At least that's the plan so far. I haven't implemented the AI or Network part .. but the actor polling the controller works fairly well.

I've thought of a tentative project title - mainly because I'm sick of calling it "my project". I'm planning/hoping on calling it Tangent. I choose that name because my project is essentially a relationship building sim that takes place in a restaurant that the main character works at. Although the main character finds working there a little miserable, little jobs like that are just looked at as tangents in life. A minor detour from what she truly wants to do. We've all had jobs like this, right?

Although, I think that "Tangent" might sound a little too technical. Any opinions?

## I'm still alive somewhat.

Hello there! It's been awhile, I know. I've been really busy with school lately and haven't had much time to program or to really even breathe. As I approach graduating with a computer engineering degree it gets hard to find fun sitting in front of a computer screen when I'm doing it all day already. Plus, I'm in a few classes right now that really demand my time. In one of them, I have to write a compiler to convert some code into our custom instruction machine language.

As you can see, I've converted to the awesome black theme. So cool!
Game Development

But enough about me, and more about what's going on game development wise. Originally, my friend and I wanted to name our development company TeamBR - something we've been calling ourselves for years but another team beat us to the name (and the domain name). We still love the BR acronym so we came up with something matching it. Of course, us being fans of GuiltyGear decided to call ourselves the Bandit Revolvers. At first, I was uncomfortable with having the name "bandit" in the name of a company, but then with any name I sort of accepted it. And I guess we'll have to work hard to try to come up with "original" ideas for our products.

So recently, I've been doing a major overhaul with the game engine. Before I had to structured so that it would've taken a huge select/case statements to support multiple game modes - such as the splash screen, main menu, actual game, options menu, etc. I have it in a gamemanager sort of class that pushes and pops new game states from the stack. It seems to work well so far, but I have to watch for state duplication such as: Main Menu -> Play Game -> Paused State -> Option Menu -> Main Menu

Lately, Lua has been giving me NOTHING but headaches (damn coroutines). But I'll try to tackle the problem that I'm having a little bit further before I post here for help. Essentially .. what I'm trying to do is the following.

introstate.lua
Game:logMessage("[introstate.lua] Entered introstate.lua");wo = Game:wait(3) -- Wait 3 secondsGame:stall(wo); --Stall script execution until the event passesGame:logMessage("Hello mother!"); -- Should be printed 3 seconds later Game:logMessage("[introstate.lua] Left introstate.lua");

But of course, nothing turns out the way to want it to. [crying]

## Go ninja go ninja go!

Ninjas, crates, and hearts, oh my!

There you have it the first screenshot from my project in progress. Yes, I'm using that same generic Ogre Ninja that everyone else is using as a placeholder for my actors. The hearts are items you can actually pick up. A gun drops in there some where, but you can't shoot with the gun.

The hardest part about designing a HUD is to find out what information you want on the screen, and where you want to place it. So far, the only thing that I'm sure about is the Clock and the time elasped will be in the middle. I do have a mock screenshot drawn out on paper, but I'm in the process of moving into my new apartment for the year and haven't found time to hook up my scanner.

In the upper left corner is a stamina counter. The +N number indicates the regeneration rate per second. The less active you are, the more stamina that you get back. Holding down a button acts like a "run" button and you move twice as fast. It takes 10 stamina to activate, and consumes about 4-5 stamina a second.

And of course, crates! More crates! The future in physics in gaming is even more realistic crates! But .. what's with the beach ball?

Of course, none of this stuff (except for the stamina portion) is going to be in the actual game. I made the heart item to create the messaging system between items -> the game -> the player, and I made the physics so that I could have realistic situations occuring in the restaurant. For instance, if the player is too close to a table with a plant vase on it, the plant vase could wobble over and fall to the floor. That player would be responsible for getting the broom to clean up the mess so that customers around the mess wouldn't get irritated. A irritated customer means a lower tip.

So, back to work.

(Zug Zug)

## Actors, Items and Props Oh my!

Hey! Sorry it's been awhile since my last entry. I've been really busy trying to move out of my old apartment and into my new one. I hate leases that end a day before I have to move into the next place. Ah well, that's college apartment life I guess.

I know I said that I would provide screenshots, but I can't do that right now because I'm doing this at work. I'm still doing what I need to do at work, but this just takes up a little bit more time. You know how it is. At least I'm not spamming refresh at slashdot or something.

At least for today.
The Engine
One of the many problems that I had when I was a novice progammer trying to get really into game development is the problem of making an "engine" to go with the game. Eventually, I would get frustrated at trying to handle how to do the graphics and then give up for a few months. Then I would start again with a new design, and then scrap that months later.

Back then I was a firm believer in reinventing the wheel. I fell into that trap of trying to do things right the first time so I spent months and months looking at forums and example engines to try to find out how they did it. 70% of it was over my head and that obviously showed in my previous designs.

Now I'm at the point where I don't really care HOW it's made, as long as it gets done. This time around I am using the power of middleware! Here are some libraries that I'm using this time around to make sure my game gets made:

Graphics - Ogre I love Ogre because I find it really easy to use. And the support and the documentation is great as well. You just have to be good at searching forums and wikis and there is a gold mine of information to get yourself started.

Physics - Newton One main reason why I'm using Newton is that there is already an Ogre wrapper for this physics library and I'm using that to save myself sometime. I do like how easy it is to use though. I enjoy it a lot more than Ode.

Sound - OpenAL No particular reason. I just like the Open part actually. I haven't quite put sound support into my engine yet so I have to see how this turns out.

Scripting - Lua with LuaPlus I'm using Lua because it has the most support when I search for scripting online. Squirrel seems interesting as well, but I'm already knee deep in the Lua to change now.

To actually make my models, I have blender. Although, I really dislike blender because I think it is rather hard to use and I would like to invest in Maya in the future.

The Basic Structure
I know that there are much better ways to do this, but I'm basically using inheritance to handle all of my objects. There is a base GameObject class, and a Prop, Item, Actor class that derives from it. A Prop is just an object that doesn't provide anything to the gameplay it's just there for looks. Like a trash can, or a ball of paper on the street would be a Prop. Item is an object that reacts to being touched by an Actor. An Actor which is a controllable model.

But yeah, I'm feeling the pain of using inheritance. Right now my Player class has a pointer to an Actor object, and in the Actor object code I have a if (this->isPlayer) check to see if that Actor has a pointer going back to the Player class to handle special collisions, etc. It's kinda hard to explain without having my code right next to me. But, I feel that I should strongly consider making a Player dervive from an Actor class.

Well I should probably get back to doing something constructive, you'll hear from me later.

## Ambitious, yes.

Sorry that I said that I would post the following day after my first entry. There is something magical about Guild Wars that keeps taking away my game development/journaling time. And I'm also sorry for typing so damn much.

The Game
In my last entry I said would say something about the project that I'm working on. Basically, my game is a mix between a dating sim, a restaurant simulator, and a card game all at the same time. Now that I've told you what I'm doing, I'll tell you WHY I got this crazy idea to put these things together.

5 years ago in my freshman year in college I got a job at a serving food out to other students in a cafeteria. Sometimes we would dish pre-made food behind a counter, sometimes made to order. Occasionally we would deliver food directly to their table or to their respective dormitory. Sometime during one of those shifts, I was thinking about a game where you would run a restaurant and dish food out to customers. The customers would leave tips and you could update your restaurant to attract more customers. Of course, I wrote this idea down in my game idea notebook and stored it away for awhile.

When I looked at that idea that wrote down years later it still seemed like a really good idea. Then I found out about Diner Dash. I was a little disappointed when I played the game. It seemed pretty simple (because of its casualness) and at the same time it felt ... lonely. It was just you, running around like a damn FOOL serving nameless people that don't truly appreciate your service. It never really captured the feel of working at a restaurant in my opinion.

Then again, maybe it wasn't supposed to. After all, (working != fun), right?

Seeing the restaurant idea implemented like Diner Dash made me realize that it might not the manager role that would make these games more fun. I think that it would be more fun at the employee level. Being a waiter or a waitress serving people, getting to know regulars (plus coming up with nicknames for them), and having to deal with "office politics" around the restaurant. Oh, and we all loooove politics don't we?

This is where the dating simulation like portion of my project comes into play. You will be forced to work the same shift with other employees, who may like you or hate you. Choices that you make and things that you choose say to your co-workers will influence if they will team up with you, or are against you in the game and try to get you fired. After all, you're just another cut in their tips. :)

There's a big problem in designing these kinds of games. That's to not branch your storyline with multiple scenes into oblivion and have the entire thing come out muddled and crappy. And nothing is crappier than a poor chose your own adventure.

Dating Sims

My favorite dating sim (and I can't believe I'm talking about this but it's kinda relevant to explain my inspiration) is an OLD OLD game from 95' called True Love. I love this dating sim, because not only do you get control over what you do throughout your day(go to class, work out, groom, work, etc) but you're forced to make choices that slightly influence the characters around you. Want to meet that mysterious woman only seen at night? Start patrolling at the park at night and be sure to be well groomed. Want to go on a date with the leader of the swim team? Hah, too bad, start working out at the gym and maybe it will happen. But then the drama queen of the school won't like you anymore! You can't get everything you want all the time, and that was your choice that you ended the school year with NOBODY (it's possible). It's also possible to end up with your best friend, who is a guy.

The best part about dating sims is that they force you to make a choice and you have to live with it. There is nothing more nerve wracking then someone confessing your love to you, and you're not really interested yet your female childhood friend and the girl you ARE interested in both show up. Crush her heart and tell the truth? Choices, choices...

There's also a bad side to dating sims. But we all know what THAT is.

Seeing characters evolve and situations change based on your choices in the game is addictive, and I wish more games were like that.

(On a side note, at the end of Earthbound a majority of the NPCs said something different to you after you've beaten the game. It was a real treat going around towns and talking to everyone to find out what affect that I - the hero Ness - had on them. Although you didn't really have a choice to save the world ... )

Unfortunately, I still believe that this charm can only be really harnessed in the power of text. Otherwise, you would need a lot of cut scenes to cover the ground of all of the possible story paths, endings etc. I believe that this is the reason why many of the recent Japanese dating sims (with animation and voice acting) tend to be on rails (at least the ones I've played), if you know what I mean.

I'm also not saying that I'm going to be making a graphical text adventure. There will be some bit of action involved. The hard part will be balancing the action with the reading, because kids sure do love to read anything non MySpace related these days. That's why you prototype what you're doing early I suppose. :)

Oh, and you're probably wondering where the card game fits into all of this. Well, I'm not going to reveal all of my cards yet so I'll tell you about that later on with unimpressive screenshots of what I have so far.

(Wow, man was that clever...)

## And the story begins!

First Entry
Wow! I have to say it's rather wierd to be making a journal entry in here instead of reading one. Hell, it's just wierd to even make a post. I've been a "member" of gamedev.net for about 3 years, and i've only made two posts here. One was about the PS3 and the other was about Darwinia.

At work one day, I realized how much information and time I've spent at this website and suddenly decided to say, "Screw it, I'm going to become a GDNet+ member and stop lurking." And so I did. And here I am with my very own journal. Amazing :)

So enough of the reason why I'm here, time to introduce myself. I'm a 6th year Computer Engineering senior at the University of Wisconsin Madison. I'm here for 5 years because I've switched my majors twice. At the start of my college career, I was a Computer Science/Japanese major. Then, the hard college level maths hit my GPA really hard, and I was unable to get into the Computer Science program. Thus, I made the switch from learning about the software, into the hardware. Sort of a step sideways, but I'll gladly take it.

The life story

I've aspired to be many things when I was little to where I am now. I first wanted to be a Astronaut, until I realized that space was a scary place and that no one can REALLY hear you scream. When I was 8 years old I wanted to be a teacher, but then that dream faded away quickly when my family got their first personal computer. Unforunately, that computer was a Packard Bell.

That computer was a piece of shit in general, but my mother (who was a programmer at the time) taught me a few commands in BASIC. I'm sure most of you remember your first program and how HORRID it was. Mine was full of gotos and prints, but I loved every minute of it. From that day when I wanted to be a computer programmer. And I spent all of middle school and high school taking computer courses and math courses (I did well in those back then) and then when I get to college I started sucking academically. What it really came down was that I couldn't perform very well on the math exams, no matter what I did.

It was a blow to my pride not getting into the Computer Science program. I suddenly couldn't be something that I've always said that I would be. Sure, I could've transfered into a different school. And I was very close to submitting my transfer papers when I then realized that I didn't really know what I wanted to do with my life just yet.

So I decided to go into computer engineering just to leave college with something. Although my heart isn't quite in engineering, I found out that it isn't too bad. Maybe someday in the future I'll make the targeting program for a GUNDAM.

And most important of all, I realized that I didn't need a piece of paper to say that I was a Computer Programmer. I am one inside, and always will be. It is what you do with that knowledge that matters.

So what else?

Apart from programming, I enjoy doing other things too. At some point, I wanted to be an artist. I still draw every now and then, though not very well. I also like to watch japanese animation (aka anime). I can't quite comprehend an entire episode in raw japanese yet, but I'm trying to get there :)

The kind of games that I love are strategy (Final Fantasy Tactics), action/adventure/rpgs (Devil May Cry, God of War), Fighting (Guilty Gear, Street Fighter, King of Fighters, or any other 2d fighter), and the action/exploration genre (Castlevania:Dawn of Sorrow, Metroid, those kind of games), and Dating Sims.

Yes. Dating Sims. Yes, I do have a girlfriend (surprisingly).

That's all I have to say for now. I'll probably post details about my project later on tonight. After all ... that's what this place is for, right?

(Jesus, that was long.)