Sign in to follow this  
  • entries
    26
  • comments
    33
  • views
    7988

About this blog

The making of Symphony of the Five Rings.

Entries in this blog

Education

Ok, so here is the story. I took a programming test for a gaming company a while back. Said test was timed and it was a rather short period of time. You only had two problems to solve. Needless to say I was unable to finish even the first problem in the time alloted. At that time I just gave up and wrote it off that my programming skills were not up to par for the test.

The other night I was rather bored so I decided to try the problem again. After struggling with the problem for some time, I decided to use the internet to help me find my solution. After a couple searches, I had a general idea of how to solve the problem. It was not a difficult solution. In fact I am quite sure that if I had attended a four year college instead of a trade school, said problem would have take very little time. But even with my Internet research my second attempt still took longer that the original alloted time. The issue I had and still have is my lack of knowledge of what I guess could be considered some of the basic software engineering principals. I blame this mainly on my current level of education.

So I'm headed back to school to get my BS in Computer Science. I already have an Associate Degree from Full Sail. But as more time goes by I realize that stopping there is not enough. I must continue my education so I can get to a place where I want to be in life. Successfully developing video games.
Its been a while. I've been doing lots on the game dev side. I just haven't had much time to post due to helping my wife start her own business and getting ready to go back to school. This post is going to be mostly a cut and paste from some of my design document. But it should give a good idea where I'm going with the game. Right now my goal is to make a test bed with a simple map and random battles. Then I will add more features later. Like shops and towns. The game has changed from a side scroller to a top down view to simplify development of the combat prototype.

This is the initial writeup for how the combat system will work in my game and is subject to suggestions and change.

----------------------------------------------------
Character Stats
----------------------------------------------------
Hit Points
Ability Points
Melee
Ranged
Magic

----------------------------------------------------
Levels
----------------------------------------------------
The level cap is unlimited
The character gains three skill points every level
The character gains one specialty point every 5 levels.
The equation for the next level is PrevLevel + CurrentLevel * 100
Experience is reset to 0 when you level.
Experience does not over flow into next level.

IE.

Bob has 99/100 xp. Bob gains 10 xp. Bob would level to lvl 2 and his XP would be set to 0 not 9.

-----------------------------------------------------
Combat
-----------------------------------------------------
Combat is turn based. The combat order is randomly decided at the beginning of combat. Each combatant is able to make one action per turn. Until all of the opposing combatants are dead.

-----------------------------------------------------
Character Death
-----------------------------------------------------
The character will loose 10% of current xp. The character can not level down.

-----------------------------------------------------
Specialties
-----------------------------------------------------
The way the character gains abilities beyond the basic attack ability is through specialties. It takes 1 point to unlock a specialty and 1 point to unlock additional skills under that specialty. Some specialties may have masteries that would let the character gain further skills once the Character has gained all the base skills under that specialty. Mastery skills cost 2 specialty points.

IE.

Specialty Holy Magic:
* Heal
* Cure
* Bless
* Smite
* Group Heal

Holy Magic Mastery Undead:
* Exorcism
* Holy Water Grenade
* Turn Undead

This is the sample lua script for setting up the specialties and masteries.

-------------------------------------------------------------------
-- An Example Data File for laying out Specialties and Masteries --
-------------------------------------------------------------------

-------------------------------------------------------------------
-- Data Available to define abilities with
-------------------------------------------------------------------
--
-- Specialty
-- * LongName
-- * Discription
-- * MinLevel
-- * Register()
--
-- Mastery
-- * Specialty
-- * LongName
-- * Description
-- * MinLevel
-- * MinRank
-- * Register()
--
-- Ability
-- * Specialty
-- * Mastery
-- * Rank
-- * LongName
-- * Description
-- * MinLevel
-- * Use(Target,ActionType) IE. Targets could be Friendly, Hostile,
-- Undead, Add AOE to the end of any
-- Target to make the ability AOE.
-- Action Types would be Damage, Heal,
-- Buff, and RemoveBuff
-- * RangeMin
-- * RangeMax
-- * Buff
-- * BuffType
-- * Register()
--
-- Buff
-- * LongName
-- * Description
-- * Stats
-- * Turns
-- * Duration
-- * RangeMax
-- * RangeMin
-- * Type(Type)
--
-------------------------------------------------------------------

-------------------------------------------------------------------
-- Specialty Holy Magic:
-- * Heal
-- * Cleanse
-- * Bless
-- * Smite
-- * Group Heal
-------------------------------------------------------------------

-------------------------------------------------------------------
-- Set Up Holy Specialty ------------------------------------------
-------------------------------------------------------------------
Holy = newSpecialty()
Holy.MinLevel = 1
Holy.Register()

-------------------------------------------------------------------
-- Set up Heal Ability -------------------------------------------
-------------------------------------------------------------------
Heal = newAbility()
Heal.Specialty = "Holy"
Heal.Rank = 1
Heal.Use("Friendly","Heal")
Heal.Use("Undead","Damage")
Heal.RangeMin = 5
Heal.RangeMax = 10
Heal.Register()

-------------------------------------------------------------------
-- Set up Cleanse Ability ----------------------------------------
-------------------------------------------------------------------
Cleanse = newAbility()
Cleanse.Specialty = "Holy"
Cleanse.Rank = 2
Cleanse.Use("Friendly","RemoveBuff")
Cleanse.BuffType = "Bad"
Cleanse.Register()

-------------------------------------------------------------------
-- Set up Bless Ability -------------------------------------------
-------------------------------------------------------------------
Bless = newAbility()
Bless.Specialty = "Holy"
Bless.Rank = 3
Bless.Use("Friendly","Buff")
Bless.Buff.Stats.Melee = 1
Bless.Buff.Stats.Ranged = 1
Bless.Buff.Stats.Magic = 1
Bless.Buff.Duration = 5
Bless.Buff.Type("Good")
Bless.Buff.Type("Holy")
Bless.Register()

-------------------------------------------------------------------
-- Set up Smite Ability -------------------------------------------
-------------------------------------------------------------------
Smite = newAbility()
Smite.Specialty = "Holy"
Smite.Rank = 4
Smite.Use("Hostile","Damage")
Smite.RangeMin = 5
Smite.RangeMax = 10
Smite.Register()

-------------------------------------------------------------------
-- Set up Group Heal Ability --------------------------------------
-------------------------------------------------------------------
GroupHeal = newAbility()
GroupHeal.Specialty = "Holy"
GroupHeal.Rank = 5
GroupHeal.Use("FriendlyAOE","Heal")
GroupHeal.RangeMin = 5
GroupHeal.RangeMax = 10
GroupHeal.Register()

-------------------------------------------------------------------
-- Mastery Undead:
-- * Exorcism
-- * Holy Water Grenade
-- * Turn Undead
-------------------------------------------------------------------

-------------------------------------------------------------------
-- Set up Undead Mastery ------------------------------------------
-------------------------------------------------------------------
Undead = newMastery()
Undead.MinRank = 5
Undead.Specialty = "Holy"
Undead.Register()

-------------------------------------------------------------------
-- Set up Exorsism Ablility ---------------------------------------
-------------------------------------------------------------------
Exorsism = newAbility()
Exorsism.Mastery = "Undead"
Exorsism.Rank = 1
Exorsism.Use("Undead","Damage")
Exorsism.RangeMin = 10
Exorsism.RangeMax = 12
Exorsism.Register()

-------------------------------------------------------------------
-- Set up Holy Water Grenade --------------------------------------
-------------------------------------------------------------------
HolyWaterGrenade = newAbility()
HolyWaterGrenade.Mastery = "Undead"
HolyWaterGrenade.Rank = 2
HolyWaterGrenade.Use("UndeadAOE","Damage")
HolyWaterGrenade.RangeMin = 7
HolyWaterGrenade.RangeMax = 10
HolyWaterGrenade.Register()

-------------------------------------------------------------------
-- Set up Turn Undead ---------------------------------------------
-------------------------------------------------------------------
TurnUndead = newAbility()
TurnUndead.Master = "Undead"
TurnUndead.Rank = 3
TurnUndead.Use("Undead","Buff")
TurnUndead.Buff.Turns = -1
TurnUndead.Register()


Screeny Power!

Here is a new and improved screeny. With artwork that may make it into the game even. Granted said artwork is not complete. There is still more detail needed to be added to the background image. It is supposed to be Mount Fuji. Hopefully I am achieving this. I do not think I am bad at creating art it just takes a while for me to produce something that I am happy with. I haven't really worked on the tiles yet. The solid green tile and the brick tile are all I have right now. But they work for what I need until I get some gameplay working. Also I haven't even started on the player artwork. Drawing the animations for the player is probably the thing I'm looking forward to the least. The blue area at the bottom is where the player information will be displayed. The game will be presented one screen at a time and will transition to the next screen when you move to the edge of the screen or use a door. Hopefully this answers some of your questions about the look and feel of the game.



-Development--

The other day I realized that I have just been delaying making any progress by staying in the "Design Phase" of the project. I have a list of all the features I would like in the game, And a basic concept written out for the story / levels. So I am going to be moving out of the Design Phase and into full production.

I had initially wanted to go with a 2.5d engine but after carefully considering the amount of 3d artwork that would require I decided against it as my 3D modeling skills are limited to Cubes and Spheres. So I shall be going will a pure 2d tile based engine. I'm going to be writing it using Ravuya's Propane Injector so I can concentrate more on making the game instead of the engine.

The Game is going to be a remake of a little project I did while at Fullsail called Symphony of the Five Rings. Its a side scrolling action adventure role playing game. You play as samurai warrior sent out on a mission to prove your honor and loyalty to the empire.

--Games--

I've been playing alot of Mario Kart DS as of late. Its freaking awesome! Also WoW is a freaking virus on my time. That is all

(OO)

So there have been a couple of journal entries about software engineering and unit testing. I was wondering if anyone out there had recommendations on books on these subjects. I'm looking to do allot more on the technical design front on my next project, and would like to read up on the subject. Unit test also seem like a very advantageous thing to do starting towards the beginning of a project. I'm not sure if I would do it towards the end of a project.

I do know one thing I want to keep my game design and my technical design separate this time around. I've noticed that if I have both in the same document the document tends to suffer on the technical side of things. I also want to make sure I have everything flushed out so I don't end up just tossing the project aside because I hit a point where I don't know where it is going.

---------------------------------------------------------------
| Projects that have so far halted / failed in the last year. |
---------------------------------------------------------------
Project Dusk ( side scrolling action adventure game )
Level Grind ( multi player 2d rpg )
SOFR 2 ( side scrolling action adventure rpg )
Coin 2 ( see coin and then make it more like lode runner )
3D Action Shooter
Text Adventures

I plan on taking one of these projects and fully designing it out and finishing it. I have pinpointed several things that have cause my failure to complete any of these projects. The first which i touched on earlier being a lack of proper design. The second is motivation, now there have been several factors contributing to my lack of motivation. The most pressing and the one I'm working on is my lack of a healthy life style. This is most likely due to a lack of exercise and diet related problems. Ever scene I have put on this weight my mind has not been preforming at its optimal capacity. I am starting a exercise regiment and have been eating better. Hopefully this will help my focus and motivation.

I have plenty of time so that is not a problem and my skill level is up to par for the requirements of the projects above, except for maybe Level Grind which would require me to learn network programing, which isn't necessarily lack of skill but lack of knowledge on the subject which could be fixed by time, which I have plenty of being that i am unemployed.

I'm still up in the air as to what project I'm going to tackle so if there is a particular one in that list that you would like to see let me know.

Lets try this again

== Life ====================

Well I'm back... A Lot of bad has happened since I last Posted. I had quit my job so we could move to where my wife got a job, 6 months later my wife looses her job and now we are both unemployed. This mean we are living with he parents and looking for work / trying to do as much game dev. as possible.

== Dev =====================

I lost all my code to a HD Failure. :( and all my backup disks are in storage in another state. So I'm starting over again. I'm using DirectX9 this time for my graphics. I was going to use XNA at first but my laptop is old. MDX is no longer supported and it hates me for some reason every time I tried to use MDX my textures would just vanish on me like 4 frames in, so that was out of the picture. So the only thing left was DirectX9.

I'm also going work on a variant of Project 1 of the C++ Workshop. It will be based on the L5R Combat System instead of the D20 System.

Also if anyone know why WriteConsoleOutput outputs ASCII characters 126-255 as '?' It would be greatly appreciated.

I'm going to try and keep this updated more often. :)

More Info... Sorta

Well I was planning on having this big post, but unfortunately I way over slept and feel like I have a hangover. By over sleeping I mean like 13 hours of sleep. So here is the shortened version. I'll post the longer less crappy version latter.

Well here it is.

Story:

You are Experiment number 002321. You have been created by the Single Alliance of Communistic Nations Against Democracy (SACNAD). Some time during the night the door to your holding chamber was left open. You must now escape and find a way to destroy your creators...

Gameplay:

Mario style side scrolling adventure with more emphasis on power ups and equipment.

Options

I like options.

the player is going to get to choose between

4 mouth styles
4 eye styles
4 shirt styles
8 skin tones

here is an image of some option samples.
Of course i may change up some of the options.
I'm not sure about some of the skin tones.

Untitled

Here is my design for the character for my next game. Programmer art FTW. Its still my first time drawing him so i'm sure he might change a litte, not sure i like the green skin, we will see.

I are Noob

even the NPCs think I'm a noob.



In other news. I've been working on my map system for my next game. I finally desided to stop trying to make my own graphics engine and just make a damn game. I'm using hge for graphics and sound and lua/luaplus for scripting. so far so good. screenshots should be coming soon. :)

Untitled

Ok... So I did some thinking and These are the subsystem I came up with that I need. Yes at first all this is just going to be for a pong game. I do want to design this though so i dont have to code everything over again on my next project. So alot of this may seem overkill.

*Renderer
*Physics
*Sound
*Scripting
*Resource
*GUI
*World - being a series of maps
*Map
*Sprite
*Actor

As far as scripting goes. I'll probubly be using lua, as that is what i'm most familar with.

I usually end up going with a generic actor that I can expand through lua in my engines. So far this is what I've come up with as far as how I would like it to look in the scripts.


-- Creates a new Actor
Bat = Actor.New()
-- Makes the Actor a Physical Entity in the World, as not all actors will require a sprite or collision.
Actor.MakePhysical(Bat)
-- Once we have been made physical we should now have access to the functionally that comes with that.
Bat.Sprite.Set(BatSprite)

-- Adding and assigning the speed variable to the bat actor
Bat.Speed = 1

-- Another Possibity for adding variables
-- This way would allow for adding c++ classes as member variables.
Bat.AddVar("Speed",VarType::Int)
Bat.SetVar("Speed",1)
Bat.GetVar("Speed")

-- Defining an Event Handler
function OnEventName(This, Args)
This.X += This.Speed
end
-- This function would add the Event Handler and also subscribe the Actor to that event type.
Bat.AddEvent("EventName",onEventName)




I'm still undecides as to if this is the aproach I'm going to take. But at least I'm planning.

More updates on the way once I make more plans.

Edit: I think I'd rather go with a Bat.Move(Bat.Speed,0) where the function automaticly takes care of the time based movement for you.

Update

I just recently moved to the Middleton, WI. My wife got a job here so I quit my old job. Good thing I hated my old job. I've been without a job for 1 month and 16 days and done abloslutly nothing with my time. I think I have figured out my problem though. I have been playing alot of World of Warcraft.

see below.



I canceled my acount today, but there is still one month of active time on it. Hopefully I can resist the temptation and actually get some work done for once.

As for what i'm working on. I think I'm going to start simple with maybe a pong clone or a breakout clone just to get the dust off my programming skills. As for the purpose of this post. Well mostly just to do something to try and modivate myself to get off my lazy ass and do something. I should post more tomarow, about what exactally i'm going to be doing. But first Sleep its 3am.

Wish me luck.

Graaahhh

So ok... I've got way to many projects going on. I've decided to put two of them on hold cause there is no way i can actually make any progress when working on 3 projects. I'm working on AX.
All other project are put aside now.

AX is going to be a 2d scrolling shooter with 3d graphics. I'm working with D3D for the first time here. I'm actually liking it. I didn't care for 3D that much last time I worked with it in OpenGL. But I'm guessing that was because it was a school project, a Virtual World thing that I really wasn't that into.

Anyway if you want more details you can check out my site.

SOFR

Look at it... this is my new project. Really just a remake of an old console(dos) game me and some buddies did for our extra credit assignment in c++ class at Full Sail.

Image hosted by Photobucket.com

Its not done yet by far. Got the guy moving around and all the artwork is being hand drawn by my good pall steve.

As for those that wanted a new version of coin. I canablalized that to make this. so no coin for you.

Yup More Coin!

For those of you who loved and or hated Coin for the uter lack of effort put into the project and the fact that really it wasn't much of a game. Let your heart fill with joy to know that a new version of Coin is coming soon. With tons more features. (aka. more than just holding down the space bar to watch the counter.)

This time there shall be effort!

New Features:
* Music and Sound Effects
* Side to side movement
* Actuall physics.
* Levels
* A level editor
* Coins now have multiple spawn points
* Coins disapear when you collect them.
* There will be different values of coins.
* Evil bill collectors will now apear and hurl objects at you to try and take your coins.

Stay tuned for futher updates on Coin.
Note: Coin will still remain a 'Spacebar' only game. You change your direction when you colide into a wall.

Feal free to comment on the new features and the original POS that is and was Coin.

Coin!

Here it its my 1W1B2 Entry. Not sure its good. But 2 hours 10 energy drinks later we have this. COIN! Go ahead check it out in all its spacebar suto game glory.

Coin!

So yeah... I'm Stuck.

So after looking into Torque2d checking out a couple of other 2d engines. I finally decided that I didn't waste my money on T2D. It's actually a really cool engine, and once they release the next version (as it is still a early adopters release) it will be even better.

So now that I'm finally done reviewing the engine. I was going to throw a quick card game together to get to know the engine just a little bet better. But for some reason, I have no motivation when it comes to working on the card game.

So now I'm just going to start on my RPG. I'm dubbing it with the temporary, possibly the final name of Level Grind (LG). Only thing is I can't decide on how I would like the player to move around. I was originally thinking maybe it would be just one combat screen after another. But I do like exploration. So now I'm thinking maybe a top down view or maybe possibly side scrolling. The killing fields that you get to explore will be most likely randomly generated. I want to hear your guys suggestions on it, should be top down, side scrolling, or something different that I didn't think of.

Torque2D

Well I bought Torque2D today. I figured the easiest way to get over the. "I can never finish my engine" syndrom is to just use a pre-existing one. I had to go to work before I could play around with it a whole lot, but it looks promising. Hopefully I'll have some screenies for you all by the end of the week.
Sign in to follow this