Jump to content

  • Log In with Google      Sign In   
  • Create Account

Drakkcon's journal



..............

Posted by , 17 April 2007 - - - - - - · 181 views

Okay, so I've been away for a really long time. I had to take three standardized tests in a row, and I'm only two-thirds through. Also, due to the fact I have no discipline or motivation at all, I'm giving up on my latest RPG project. I have seriously tried to make a simple 2D RPG at least two dozen times, in the past several years, and I have never even got close to having a playable game. Well, it's not so much a lack of discipline as a lack of skill. I always get up to the point to where I need art to test, but I'm not a good artist. I don't want to work in a team, so I start trying to draw my own art, but it's awful, and I get demotivated. I always end up buying some book on how to draw, making no progress at all, and trying again, but with built-in demotivation because I failed last time.

Not this time though, this time I'm doing something different! I have discovered that I find computer engineering more interesting than software engineering, so I want to build my own game console. I bought "The Black Art of Video Game Console Design" by André Lamothe, to go with my X Game Station. I had the original e-book, but it was impossible to read the stupid hand drawn diagrams (which have been replaced in the book), and also I just hate reading e-books. The only problem is that André is a terrible teacher. I don't think I have seen worse explanations and more misleading comments in my life. But, in spite of this, I am learning, and thanks to a lot of helpful people on gamedev helping me overcome a mental block with electricity in a recent thread, I'm ready to get started in the world of microcontrollers.

I'm going to build an SX-based game console, but different from the xGameStation. What I really wanted to do, was to build a 6502-based system, but due to their prices, I'm going with an SX-based system, probably using the SX28 DIP version so I can use a breadboard with it. I was thinking of adding a dedicated video processor so the main cpu doesn't have to generate an NTSC signal, which is really lame. I was also thinking of using a better sound system, like the one used in the Hydra (which I may also get), because the sound system in the XGS sucks. Oh, and I want to add ROM cartridges too.

So anyway, I know I'm not going to give up on this because I haven't been so excited about a project in a long time, and my excitement has stayed for more than a month, which is more than any of my game projects.


Untitled

Posted by , 20 February 2007 - - - - - - · 130 views

So I haven't put anything in this journal for a long time, 'cause nothing exciting has been happening with me (unless you call playing Baldur's Gate for the billionth time exciting).

But now, I'm working (again) on a game engine. Woo.

But this time it's different for the following reasons:

  • I am not planning this at all, I will just refactor as necessary.

  • I am making content as I need it, not all at once (big sticking point).

  • I am using C# and XNA.

  • I am better at programming.



So I'm going to have fun doing this without too much forward planning, and seeing how playable it is.

Anyway, the first thing I started on were the gameplay classes, because they're more fun to make than graphical classes.

So the most important game play class is the entity (I started spelling game play as two words because Firefox's spell check is yelling at me) because it represents something that can be interacted with.

Every entity has two parts: its sprite, and its other stuff. I couldn't figure out a name for the other stuff so I called it "EntityReference".

Here's what I'm talking about:

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

using FromNothing.Utility;

namespace FromNothing.Gameplay
{
class EffectValue
{
string idName; //must be unique
string visibleName; //what the player sees
double Magnitude; //how strong it is
long Duration; //how long (in milliseconds) it will last
}

//this class specifies all the information about an entity that I might want to save.
//Any thing in the game world that can be interacted with is an entity.
class EntityReference
{
//This MUST be unique, it is used to identify an object
string idName;
//This does not have to be unique, it is what the player sees.
string visibleName;
//This refers to the type of object that this actor represents. EntityTypes might
//be "door", "tank", whatever
string entityType;
//Every actor has various attributes and statistics associated with it.
//This dictionary maps an attribute name with its value. Examples of attributes
//would be "strength", "dexterity", and "hitpoints", or in the case of a door,
//"thickness", and "picklock difficulty".
public SortedDictionary<string, Variable> attributes;
//Attributes are variables that are always present and relate directly to gameplay.
//They never go away. LocalVars, on the other hand, have distinct lifespans. These
//might be used to track plot points involving an actor.
public SortedDictionary<string, Variable> localVars;
//Effects are temporary ailments that are capable of effecting all entities, not
//just ones with specific storyline purposes. They are usually very temporary.
//Examples of effects include "poison", "lung shot", or "on fire".
public SortedDictionary<string, EffectValue> effects;
//Actions Performable are luachunks that spell out what happens when a character
//performs a certain action on this entity.
public SortedDictionary<string, string> actionsPerformable;

//if the variable does not exist, it is created.
public void SetAttribute(string name, Variable value);
public void SetLocalVar(string name, Variable value);
public void SetEffect(string name, EffectValue value);
public void SetActionPerformable(string name, string luaChunk);
//there is no kill attribute because attributes live until the character is removed
public void KillLocalVar(string name);
public void KillEffect(string name);
public void KillActionPerformable(string name);
/////////////////////////////////////////////////////////////////////////////////
public Variable GetAttributeValue(string name) { return state.attributes[name]; }
public Variable GetLocalVarValue(string name) { return state.localVars[name]; }
public EffectValue GetEffectValue(string name) { return state.effects[name]; }
/////////////////////////////////////////////////////////////////////////////////
public void Serialize(Serializer serializer);
/////////////////////////////////////////////////////////////////////////////////
}

class Entity
{
public EntityReference reference;
public Sprite sprite;

Entity()
{
reference = new EntityReference();
sprite = new Sprite();
}


}
}




Anyway, if you see anything that sucks, let me know. I'm going to be a game developer some day, and if you don't help me now, karma dictates that you will be maintaining my code some day.


Untitled

Posted by , 20 February 2007 - - - - - - · 131 views

So I haven't put anything in this journal for a long time, 'cause nothing exciting has been happening with me (unless you call playing Baldur's Gate for the billionth time exciting).

But now, I'm working (again) on a game engine. Woo.

But this time it's different for the following reasons:

  • I am not planning this at all, I will just refactor as necessary.

  • I am making content as I need it, not all at once (big sticking point).

  • I am using C# and XNA.

  • I am better at programming.



So I'm going to have fun doing this without too much forward planning, and seeing how playable it is.

Anyway, the first thing I started on were the gameplay classes, because they're more fun to make than graphical classes.

So the most important game play class is the entity (I started spelling game play as two words because Firefox's spell check is yelling at me) because it represents something that can be interacted with.

Every entity has two parts: its sprite, and its other stuff. I couldn't figure out a name for the other stuff so I called it "EntityReference".

Here's what I'm talking about:

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

using FromNothing.Utility;

namespace FromNothing.Gameplay
{
class EffectValue
{
string idName; //must be unique
string visibleName; //what the player sees
double Magnitude; //how strong it is
long Duration; //how long (in milliseconds) it will last
}

//this class specifies all the information about an entity that I might want to save.
//Any thing in the game world that can be interacted with is an entity.
class EntityReference
{
//This MUST be unique, it is used to identify an object
string idName;
//This does not have to be unique, it is what the player sees.
string visibleName;
//This refers to the type of object that this actor represents. EntityTypes might
//be "door", "tank", whatever
string entityType;
//Every actor has various attributes and statistics associated with it.
//This dictionary maps an attribute name with its value. Examples of attributes
//would be "strength", "dexterity", and "hitpoints", or in the case of a door,
//"thickness", and "picklock difficulty".
public SortedDictionary<string, Variable> attributes;
//Attributes are variables that are always present and relate directly to gameplay.
//They never go away. LocalVars, on the other hand, have distinct lifespans. These
//might be used to track plot points involving an actor.
public SortedDictionary<string, Variable> localVars;
//Effects are temporary ailments that are capable of effecting all entities, not
//just ones with specific storyline purposes. They are usually very temporary.
//Examples of effects include "poison", "lung shot", or "on fire".
public SortedDictionary<string, EffectValue> effects;
//Actions Performable are luachunks that spell out what happens when a character
//performs a certain action on this entity.
public SortedDictionary<string, string> actionsPerformable;

//if the variable does not exist, it is created.
public void SetAttribute(string name, Variable value);
public void SetLocalVar(string name, Variable value);
public void SetEffect(string name, EffectValue value);
public void SetActionPerformable(string name, string luaChunk);
//there is no kill attribute because attributes live until the character is removed
public void KillLocalVar(string name);
public void KillEffect(string name);
public void KillActionPerformable(string name);
/////////////////////////////////////////////////////////////////////////////////
public Variable GetAttributeValue(string name) { return state.attributes[name]; }
public Variable GetLocalVarValue(string name) { return state.localVars[name]; }
public EffectValue GetEffectValue(string name) { return state.effects[name]; }
/////////////////////////////////////////////////////////////////////////////////
public void Serialize(Serializer serializer);
/////////////////////////////////////////////////////////////////////////////////
}

class Entity
{
public EntityReference reference;
public Sprite sprite;

Entity()
{
reference = new EntityReference();
sprite = new Sprite();
}


}
}






Back

Posted by , 03 November 2006 - - - - - - · 157 views

I just got back from China.

Here is a list of weird crap that I ate:

-Sea Cucumber
-Soups made from various parts of the lotus plant
-Chicken Feet
-Tripe Sausage
-Duck's tongue
-Jellyfish
-Pork Gellatin
-A whole fish (literally)

The general rule in China is to not ask what you're eating. It's dangerous.


Okay, now that I have had a huge hamburger, I want to work on another game that I probably won't finish. The game will not use XNA, even though I was really excited about it, because I would rather learn how to use Managed DirectX.

All I know is that the game will be an RPG. It will be set in a fantasy/sci-fi universe. And it will be sort of like crono trigger, except with a more tactical battle system.

I know, I know, don't use all your creativity all at once [rolleyes]

I figure it will help if I post every time I start a part of the game. Like, so I can get suggestions. I'm not sure what the ideal order for working on stuff.

I plan on creating several interfaces to simplify the parts of my engine:

-Resource
-Subsystem
-DataStore
-DataAccessor
-Game

Anything that the player hears, sees, or anything that is rather large and needs to have specific lifespans will be a resource. Graphics, sound, animations, scripts, and anything that will load from my custom resource file format is a resource.

Subsystem should be pretty obvious. It's a game system. The Game interface will have a method that allows it to add subsystems, which it will then tick as often as possible.

Datastores are what allow different subsystems to communicate with each other. I only plan on using one, but I'm not making it a singleton because it's perfectly reasonable that you might want different subsystems to share different data with each other. Basically, the data store is a collection of lists of Events. Event looks like this:


struct Event
{
public string subsystem;
public string type;
public Object data;
}


That's it.

The datastore simply adds events for certain subsystems, and it's up to the DataAccessor to search it's list for events, and then report that to the subsystem.



Anyway. I'm jetlagged, so that may be totally incoherent. If it isn't, I would realy, REALLY like to hear suggestions for, or problems with this design. Please comment!


I'm finally back

Posted by , 05 September 2006 - - - - - - · 153 views

It's been a while since I wrote an update. I finally have internet access since moving into the president's mansion on campus here, with a shiny new 3 megabit connection (I realize the rest of the world snickers at this. Stop snickering and get me a 10 megabit connection). I really didn't have a lot to do programming wise. I was just working on random sprite projects, when BAM, XNA comes along. Out of curiosity I downloaded the beta, and was blown away by how awesome it is. Seriously, the component system is awesome, and I've been waiting for an excuse to use more C#.

I'm going to be totally trying out this platform, and maybe making some games instead of inventing wheels. I finally dropped that old way of thinking. I couldn't stand not to make everything myself, but I've realized that I always failed to make it well because I didn't really know how it should work. With XNA, I can take other people's components and easily integrate them, so my old excuse of having to learn someone else's unintuitive system won't work anymore.


Random updates

Posted by , 24 July 2006 - - - - - - · 80 views

About a week ago I got back from the National Youth Leadership Forum: Technology. It was pretty cool. I got to tour the nVidia HQ and listen to a seminar by Blake Ross, who was a great speaker.

I'll be moving to 'bama soon, this friday in fact. I'm in the process of cleaning out my room, throwing stuff away and such. I can't wait, our house will be really nice, and I'll be on the college's fiber optic line, but it will be very fast because the college is so small. The only problem is, the house is being renovated, so we have to stay in an apartment room a month until it's ready. I have lived in an apartment before, so it's no biggie.

I am currently working on a program that is sort of like Rpg maker, one of my favorite things as a 10 year old (that was when Rpg2k came out, I loved it). I have tried this many times before, but I always failed to make my own scripting language. This time, I'm integrating Lua, so that obstacle is no longer present.
Lua is a really great programming language. It's very simple, and pretty easy to integrate. The only drag is that Lua stack, which I find rather confusing. I think there should be two stacks, one for Lua to communicate to C++ with (Writable by Lua, Read-only for C++) and one that is the opposite. I don't like having only one stack for both purposes, I'm never sure whether to pop something, or whether it is automatically consumed. I think the Lua documentation is horrible also. It doesn't even show all the functions, or at least make them easy to find.

I am mapping out what the final project will be like. I want to sell a more powerful version when I'm done. Probably shareware. This would be a really cool thing to complete before I go to college. I could also release the engine itself for free or something.

I am using SDL for Graphics, and probably SDL for sound, except Midi, which I'm writing my own library for that uses the low-level Midi api, and will support lots of cool realtime transformations. I love Midi.

Anyway, wish me luck. I have a hard time sticking with projects, but this one is one that motivates me.


Hou zhou bu jien

Posted by , 03 June 2006 - - - - - - · 97 views

I recently got back from a ten day long trip to Boston. My dad has a friend who is now high up in Chinese public health, so he arranged a conference for some Chinese scholors and did some lecturing. This is about their fourth one. I was there this time because I like Boston and some of the Chinese were here in North Carolina too before we went, so they went with us. It was an interesting experience.

The only bad part of the trip was that our crooked travel agent told all the Chinese that American food was awful and expensive so that she could send them to Chinese restaurants (ones where she knew the owner), get a huge discount, and charge it like a full meal (I'm sure she made a few hundred per meal). One of my dad's collegues had spent time in camebridge for a continuing education program, and knew a cool pub called "John Harverd's Pub" or something. He got them a reservation there so the agent couldn't do anything about it, and everyone ordered steaks and had an awesome time (if you aren't American and are reading this, our beef is awesome, especially for places like this one that serve prime beef). I think they were kind of peeved at the travel agent, who also overcharged for the rooms (more than %150 markup on already expensive rooms) and sent us to a cheap hotel just out of walking distance from where the lectures were (and where the rooms were only a little more expensive). Meh. It was still a fun trip because Boston is a great city, and I'll be going to Beijing and Shanghai for the continuation of the program. Time to buy that Mandarin Rosetta Stone package =)

_______________________________________________________________________

On the software front I've been working on a text game (I'm waiting for some books on art to arrive, and I'm not a good enough artist right now for the sprite-based game I want to make). I'm not sure about the title, but the theme will be arms dealing. After I saw the movie "Lord of War" a while ago, I thought that would be a good idea for a text game, kind of like that old Drug Wars game that was popular. Anyway, I'm still designing it, but it'll be nice to get away from messing with SDL.


Oh, and I got my ACT score back. I got a 30! Woohoo! Now I have two more times to take it to get up to the elusive 36. I'll be taking the SAT soon as well, and I'll be using the same strategy as the one I used with the ACT. Just buying a book with practice tests in it.


Art of Computer Programming and some random rambling

Posted by , 02 May 2006 - - - - - - · 73 views

I just got a copy of this three book set because I realized that not only would what I learn help me with my love of little projects like the XGameStation, but would make me better at coming up with quick algorithms and just make my code better. I have been slogging slowly through the difficult math, as I'm only 16, and haven't had calculus, or anything beyond algebra II. Giant sigmas are scary.

I have a lot of time to learn this stuff though, because I'm homeschooled and can have as much time to learn math as I want. My dad works in academia, so he's really cool about getting me books that I want. The next comp. sci. related book I'm going to get is code complete, because one of my biggest demotivators is having little clue how to design my game projects. After that, I'll probably wait until the newest revision of the Dragon Book comes out and buy that.

Totally unrelated, but I'm going to be moving to Alabama soon, to a college town called Montevallo, which is about 20 minutes from Birmingham. My dad is going to be president of the University of Montevallo, which is really cool. I'll be living on campus in the prez house, which is great because even though they're a Liberal Arts school, they have lots of Computer Science courses. Also, I'll probably try to take some drawing and some music composition classes, since those are other interests of mine.

Even more unrelated is that I just bought this sexy mouse. It's so awesome.






Recent Entries

Recent Comments



PARTNERS