Computers
Tuesday, May 06, 2008
In between drawing some arms and legs (see previous post), Ive been doing some testing on the PSP. Its amazing the little things that show up on there that don’t on the PC. (Porting is not an exact science). I found a couple of really stupid errors, obvious things that really only manifest on the PSP because of how its control pad reacts. Auto repeat is not good in menus, dialogues and quest journals).
Speaking of quest journals, my roguelike has one and I’m thinking of implementing it to augment the current quest journal, only not as verbose as my roguelike.
Right now the quest journal just shows given but not completed quests which you can page through and then completed quests. Each screen has the option to quit out or go to next item. I need to change it to use ‘X’ to quit out or directional pad to scroll through the items instead of buttons to page through…
Thats the basic quest journal, but I want to add something like a game notes. Not something the player can edit but something the game tracks and shows you, example;
On 4th of Foo, year 1203 The Party defeated foobar the great
On 8th of Bar, year 1249 Pinky was turned to stone
On 8th of Bar, year 1249 Foozle died from poisoning
On 30th of Zot, year 1253 Baz was recruited to the party
On 30th of Zot, year 1255 The party accepted the quest to find the hold grail
On 24th of Bar, year 1376 The party entered a moongate
Now the roguelike is more verbose (detailing on move X you did Y etc), but we dont need that kind of granularity. I think the journal notes would be recording bigger events. Not every combat the party undertook but used more as a memoir type thing and using a book type interface drawn with good old pale yellowing paper.
mmm… if I should be able to adapt my CNC code…
mmmm Thinking some more I don’t know if it would really offer anything up to the game. It makes sense in the roguelike but this kind of journal, I dont know for a traditional CRPG....
Think I’ll stick to the quest journal.
Posted by
Stu on 05/06 at 12:13 PM
Permalink to this post.
Filed Under :
Computers •
Development •
Fishguts •
Commented on by (0) people. Read or Post
Comments Here
Friday, May 02, 2008
Not a lot of updates on the Fishguts front. Minor minor things really.
I’m going to split out all the combat sprites into their own sprite sheets rather than bung them all onto one large sheet. Its a minimal help for memory consumption and means I can make several versions of the same sprite and not feel guilty about having them all in memory in the one sprite sheet.
I’m still debating (though 95% sold on the below idea) paperdolling to a limited extent, only because the player will always be a humanoid size (so no need to account for dwarf / ogre sizes in paper dolling) .
1 - Need only draw a couple of same size icons
2 - Draw a couple of weapons.
Each sprite will consist of a couple of primary colours (chest colour, arm, leg, boots, hat etc) that the player can cycle through to select.
Once chosen, this sprite will be composed as a flat bitmap and saved as a file on disk, so I don’t have to recompose it each time we go into combat
Lets think it over a bit more.
Players icon is composed of;
1 - Ready/Guard sprite
2 - Attack sprite
That would consist of;
1 - head (bald, hat, short hair, long hair)
2 - torso
3 - arm overlay (see below)
4 - legs
5 - boots
Placement must accommodate any one of
1 - One hand weapon only
2 - One hand weapon and shield
3 - Two handed weapon
4 - Bow
5 - Staff
6 - Nothing
Now right away I can see that a two handed sword selection doesnt mesh with anything else so separate arm overlays will be required…
Each item could have a one or two colour selection.. lets make it a one colour selection, using the ‘bright’ colours and I can map in the second colour for shadow/detail as being its ‘dark’ alternate.
(Those that remember the old ANSI colours or 16 colour paint programs will know what I mean by this).
Looking over this I have immediately made things more complex than I intended, but I think its a good complexity than forcing the player to always have a preset icon…
Now, in an ideal world, and which I may still implement, is have the player choose his primary colours for torso/arms/legs/boots/head and at the start of combat dynamically create the sprite using whatever selected weapon is on hand. That would require recomposition when changing weapons mid combat… that shouldnt be too bad since combat is turn based and not realtime…
Time to get back to work-work and stop thinking game development.
Posted by
Stu on 05/02 at 10:54 AM
Permalink to this post.
Filed Under :
Computers •
Development •
Fishguts •
Commented on by (0) people. Read or Post
Comments Here
I’ve made the start town ‘bump friendly’ now, so if you bump into a guard you wont be summarily wiped out. You can still hit ‘a’ to attack and force an encounter but bumping by happenstance wont kill you.
I’m thinking of extending the time give before being kicked out of town, so that the player has more of a chance to see whats in the town than only being able to hit the supply shop first…
Things are slowly progressing nicely toward an 0.5 release
Posted by
Stu on 05/02 at 10:51 AM
Permalink to this post.
Filed Under :
Computers •
Development •
Cracks and Crevices •
Commented on by (0) people. Read or Post
Comments Here
Tuesday, April 29, 2008
I did the What DnD character are you meme (130 odd questions)
Kinda odd coz thats the character I create in any CRPG that I can play (usually I pick ranger over fighter but dualclassing both is nice). My stats are a bit low :( doh!
I Am A: Chaotic Neutral Human Fighter/Ranger (3rd/2nd Level)
Ability Scores:
Strength-15
Dexterity-14
Constitution-15
Intelligence-14
Wisdom-15
Charisma-11
Alignment:Chaotic Neutral A chaotic neutral character follows his whims. He is an individualist first and last. He values his own liberty but doesn’t strive to protect others’ freedom. He avoids authority, resents restrictions, and challenges traditions. A chaotic neutral character does not intentionally disrupt organizations as part of a campaign of anarchy. To do so, he would have to be motivated either by good (and a desire to liberate others) or evil (and a desire to make those different from himself suffer). A chaotic neutral character may be unpredictable, but his behavior is not totally random. He is not as likely to jump off a bridge as to cross it. Chaotic neutral is the best alignment you can be because it represents true freedom from both society’s restrictions and a do-gooder’s zeal. However, chaotic neutral can be a dangerous alignment because it seeks to eliminate all authority, harmony, and order in society.
Race:Humans are the most adaptable of the common races. Short generations and a penchant for migration and conquest have made them physically diverse as well. Humans are often unorthodox in their dress, sporting unusual hairstyles, fanciful clothes, tattoos, and the like.
Primary Class:Fighters can be many things, from soldiers to criminal enforcers. Some see adventure as a way to get rich, while others use their skills to protect the innocent. Fighters have the best all-around fighting capabilities of the PC classes, and they are trained to use all standard weapons and armor. A fighter’s rigorous martial training grants him many bonus feats as he progresses, and high-level fighters have access to special melee maneuvers and exotic weapons not available to any other character.
Secondary Class:Rangers are skilled stalkers and hunters who make their home in the woods. Their martial skill is nearly the equal of the fighter, but they lack the latter’s dedication to the craft of fighting. Instead, the ranger focuses his skills and training on a specific enemy a type of creature he bears a vengeful grudge against and hunts above all others. Rangers often accept the role of protector, aiding those who live in or travel through the woods. His skills allow him to move quietly and stick to the shadows, especially in natural settings, and he also has special knowledge of certain types of creatures. Finally, an experienced ranger has such a tie to nature that he can actually draw on natural power to cast divine spells, much as a druid does, and like a druid he is often accompanied by animal companions. A ranger’s Wisdom score should be high, as this determines the maximum spell level that he can cast.
Find out
What Kind of Dungeons and Dragons Character Would You Be?, courtesy of Easydamus
Detailed Results:
Alignment:
Lawful Good ----- XXXXXXXXXXXXXXX (15)
Neutral Good ---- XXXXXXXXXXXXXXXX (16)
Chaotic Good ---- XXXXXXXXXXXXXXXXX (17)
Lawful Neutral -- XXXXXXXXXXXXXXXXXXXXXX (22)
True Neutral ---- XXXXXXXXXXXXXXXXXXXXXXX (23)
Chaotic Neutral - XXXXXXXXXXXXXXXXXXXXXXXX (24)
Lawful Evil ----- XXXXXXXXX (9)
Neutral Evil ---- XXXXXXXXXX (10)
Chaotic Evil ---- XXXXXXXXXXX (11)
Law & Chaos:
Law ----- XXXXXXX (7)
Neutral - XXXXXXXX (8)
Chaos --- XXXXXXXXX (9)
Good & Evil:
Good ---- XXXXXXXX (8)
Neutral - XXXXXXXXXXXXXXX (15)
Evil ---- XX (2)
Race:
Human ---- XXXXXXXXXXXXXX (14)
Dwarf ---- XXXXXXXX (8)
Elf ------ XXXXXXXXXX (10)
Gnome ---- XXXXXXXX (8)
Halfling - XXXXXXXXXX (10)
Half-Elf - XXXXXXXXXXX (11)
Half-Orc - XX (2)
Class:
Barbarian - (-2)
Bard ------ (-6)
Cleric ---- (-2)
Druid ----- (0)
Fighter --- XX (2)
Monk ------ (-13)
Paladin --- (-21)
Ranger ---- XX (2)
Rogue ----- (-2)
Sorcerer -- (0)
Wizard ---- (0)
Posted by
Stu on 04/29 at 10:58 AM
Permalink to this post.
Filed Under :
Computers •
Computer Gaming •
Commented on by (0) people. Read or Post
Comments Here
Thursday, April 24, 2008
I branched my cnc repo tonight (git checkout -b is sooo nice!) and added highscores for multiplayer goodness. I’m going to use the same framework for tombstones and display small markers in the park of the last couple of deaths.
I can “trust” this on unix (my primary development system) but cant really trust it on win32 (everyone runs as administrator so… shrugs).
Posted by
Stu on 04/24 at 07:52 PM
Permalink to this post.
Filed Under :
Computers •
Development •
Cracks and Crevices •
Commented on by (0) people. Read or Post
Comments Here
Sunday, April 20, 2008
Honestly, I’m not doing a lot of work on fishguts lately. Been mostly messing with my language/compiler and my roguelike.
I did do some work on cleaning up my quest interface. I split it out into three files, one is just a set of constants, one a set of descriptions and such and the third is the basic routines. This way I can use my quest functions and just include the constants for things that dont requires the mss of loaded text for the quest descriptions.
Posted by
Stu on 04/20 at 07:14 PM
Permalink to this post.
Filed Under :
Computers •
Development •
Fishguts •
Commented on by (0) people. Read or Post
Comments Here
Monday, March 31, 2008
So I know what my frame limiter was… I had sped time up to test some time triggers, which in essence converted it from 1000 ticks a second to 250. Hence the dropping by 1/4… Putting this back to 1000 ticks brought me back to 16/17 frames a second…
I double tasked the use option, so now when using an item you can toggle to using a skill! Now I can hunt in forests for food.
When using the hunting skill, it scans the tiles around the player, different tiles give different weights to what game can be found. Forests are best, then woodland then grassland. Each tile type has a multiplier, and a bonus is applied if your enclosed in all forest. The scan is a 49 tile block (3x3 around the player). This is calculated into a chance of finding game, making that chance then applies your hunting skill to see if you actually brought down and bagged that game. Passing that, gives a random chance for game type, the rarest gives the most meat, the most common, the least meat, (There are only 3 types of game).
Without building big, what I would have liked to implement would be a reference underneath so you couldn’t hunt more than once in a set area without reducing the amount of game there. IE you couldn’t farm a set of tiles indefinitely without exhausting them, and over time they would replenish… but thats not code I am willing to spend on something I’m trying hard not to bloat unnecessarily…
Posted by
Stu on 03/31 at 09:03 AM
Permalink to this post.
Filed Under :
Computers •
Development •
Fishguts •
Commented on by (0) people. Read or Post
Comments Here
Linked To by (0) blogs. Get a
Trackbacks link here
Monday, March 24, 2008
I was hacking on a bug last night when I kept getting some odd behaviour in my map code… Turns out in my coding spree last night I fixed a very very old bug that I had coded a workaround for a very long time ago, and in fixing the root cause broke the work around…
So tonight, depending on time, I need to do some cleanup to remove said workaround. yay!
Looking at the solution, makes me wonder why I didn’t do it right from the beginning.. At least it ts properly fixed now.
I need to address a big bottleneck somewhere. I am currently getting about 4 frames per second.. which is horrendously poor and I cant quite see why. I ran the profiler but didn’t really see anything… humm..
I have a suspicion, based on messing around with the intro code… will have to branch the code and test this week.
Posted by
Stu on 03/24 at 08:38 AM
Permalink to this post.
Filed Under :
Computers •
Development •
Fishguts •
Commented on by (0) people. Read or Post
Comments Here
Linked To by (0) blogs. Get a
Trackbacks link here
Friday, March 21, 2008
Ive been poking with some random name generation stuff. Nothing uber fancy or anything.
First thing I did was to collect data of the top 100 boys and girls names over several years. Various web sites have lists of these things so its a pretty easy cut and paste to mine them.
I then used a ruby script to collate, sort and remove dupes.
This gave me 196 (of 500) total unique boys names and 162 (of 500) total unique girls names. You can see most are duplicates. This is also of course very English/American centric I should add.
The next task was to break down the names into c/v/cc/vv markers (consonant, vowel etc) of the english speach.
Some examples;
vcvcvccvc => alexander == (v, c, v, c, v, cc, v, c) => (a, l, e, x, a, nd, e, r)
vcccvc => andrew == (v, cc, c, v, c) => (a, nd, r, e, w)
vccvc => angel == (v, cc, v, c) => (a, ng, e, l)
vcccvcc => anthony == (v, cc, c, v, cc) => (a, nt, h, o, ny)
vccvcvv => antonio == (v, cc, v, c, vv) => (a, nt, o, n, io)
vcccvc => ashton == (v, cc, c, v, c) => (a, sh, t, o, n)
vvccvc => austin == (vv, cc, v, c) => (au, st, i, n)
cvccvcv => barbara == (c, v, cc, v, c, v) => (b, a, rb, a, r, a)
cvccc => betty == (c, v, cc, c) => (b, e, tt, y)
cvcvccc => beverly == (c, v, c, v, cc, c) => (b, e, v, e, rl, y)
ccvvccv => brianna == (cc, vv, cc, v) => (br, ia, nn, a)
ccvccvcc => brittany == (cc, v, cc, v, cc) => (br, i, tt, a, ny)
ccvvcv => brooke == (cc, vv, c, v) => (br, oo, k, e)
ccvvcccc => brooklyn == (cc, vv, cc, cc) => (br, oo, kl, yn)
cvcvccv => cadence == (c, v, c, v, cc, v) => (c, a, d, e, nc, e)
cvcccc => camryn == (c, v, cc, cc) => (c, a, mr, yn)
cvccc => carly == (c, v, cc, c) => (c, a, rl, y)
cvcvc => carol == (c, v, c, v, c) => (c, a, r, o, l)
cvcvcvcv => caroline == (c, v, c, v, c, v, c, v) => (c, a, r, o, l, i, n, e)
Of the 196 boys names this is what I got;
ccvcc = 4
ccvccvc = 7
ccvcvc = 4
cvc = 3
cvcc = 9
cvccc = 5
cvcccvc = 3
cvccvc = 21
cvccvcc = 6
cvccvvc = 3
cvcv = 4
cvcvc = 20
cvcvcc = 7
cvcvvc = 5
cvvc = 6
vcvc = 6
vvcvc = 3
Girls names were more varied and this is the output of that 162;
ccvccvc = 4
cvcc = 5
cvccc = 8
cvccv = 7
cvccvc = 8
cvccvcc = 4
cvccvcv = 4
cvccvcvv = 3
cvccvv = 4
cvcv = 4
cvcvc = 10
cvcvccc = 4
cvcvccv = 7
cvcvcv = 3
cvcvcvcv = 3
cvcvv = 4
cvvc = 3
cvvcv = 4
cvvcvc = 4
vccv = 3
vcvcv = 4
vcvcvv = 3
Using another script to use the above tables I randomly generated some names, for example;
pattern = cvcvc : pupet
pattern = ccvvcc : stoush
pattern = cvcvcvc : ronafut
pattern = cvcvcvc : nodibol
pattern = cvcvc : tunen
pattern = cvcvcvc : lejacas
pattern = cvccvcc : kolfift
pattern = ccvvc : fraes
pattern = cvccvcc : hangold
pattern = ccvvcc : gruath
pattern = ccvvcc : skeenk
pattern = ccvvcc : thouft
pattern = cvccvc : tolfaj
pattern = cvccvcc : sontunt
pattern = cvcvvc : toboum
pattern = ccvvc : skaed
pattern = cvcvcvc : lekajel
pattern = cvccvcc : fathort
pattern = cvcvvc : gekuat
pattern = cvccvc : mankos
Mmm nothing of any real value or even remotely close to existing names from the original list (I was only testing against patterns of 5 or more letters)
I should note that I weeded out a lot of things, For example there are no ‘q’ or ‘qu’ pairings and letters like ‘z’ and ‘x’ have been removed. Consonant pairings are restricted to things like ‘st’,’ch’,’dr’,’sh’ etc and vowel pairings to ‘ae’,’ou’ etc…
Needs a lot more work. I think what I need to do is weight the combinations and make a dictionary of the first consonant/vowel/combos and then the rest of the combos.
Posted by
Stu on 03/21 at 09:52 AM
Permalink to this post.
Filed Under :
Computers •
Development •
Commented on by (3) people. Read or Post
Comments Here
Linked To by (0) blogs. Get a
Trackbacks link here
Thursday, March 20, 2008
I’ve spread my self around last night, doing minor work on both CnC and Fishguts.
In CnC I built the game to resize the SDL window, and it works quite well, I’m very surprised, and it only took about 3 lines of C code to make it work. One suckage thing is that SDL clears the buffer so if you resize and hold the mouse down you get a black window until the game redraws the window, but you dont get that message until after you release the mouse button…
In Fishguts news, I’ve been tidying up my constants, the game uses a lot of constants in the C code and int he Lua code, and basically I have duplicate on the Lua side. I spent last night cleaning a lot up by having them set by the C code when a new Lua State is created, this stops me having to load the same constants in at the top of a script in an include file… so that is pretty nice.
Joy dislocated her shoulder so I’ve been doing all the baby caring stuff on my own lately which has killed any productivity but thats ok, its what marriage is about, taking care of each other. We are hoping its not a torn rotator cuff, so I might be doing only minor work on CnC + Fishguts for a few more weeks.
Posted by
Stu on 03/20 at 07:23 AM
Permalink to this post.
Filed Under :
Computers •
Development •
Cracks and Crevices •
Fishguts •
Commented on by (0) people. Read or Post
Comments Here
Linked To by (0) blogs. Get a
Trackbacks link here
Monday, March 17, 2008
The internal debate right now is over combat maps.
1 - Do I blow up the existing map into the combat map, doing say every tile x3
2 - Do I load pre-made combat maps
Doing 1 is easy and hard at the same time. It reveals the map layout (bad in caves/dungeons, but doesn’t really matter in towns or overland). The biggest downside is, it magnifies the map. The town maps use a simple tile scale. A door is 1 tile, etc. Suddenly you go into combat and the door is 3 tiles and a room might be 9x9 tiles. It might not sound bad but gives the wrong scale to the map. It sounds a lot more pedantic than it is.
One thing I remember doing in Pool of Radiance and Azure Bonds, when your in combat you can see the layout of the dungeon around you, which can be handy (you don’t see doors tho). The no door thing kinda bothered me, that suddenly in combat they all disappeared, but at the same time, I understood that this is what you get with the break between the map your playing and the combat.
Doing number 2 is really simple. I can pre-draw several combat maps, you know the plain grass combat map, the ship to shore type map, the cave map. This is the easiest method, but the downside is, what kind of maps do you have in towns? How do you represent the surroundings in the dungeon, if you have come down a crowded narrow corridor on all sides, you hit the combat map and its a nice open map with nothing like what you are really standing in..
I am leaning toward exploding the maps by 3 times right now. I may do some form of anti-aliasing so things are not so blocky in transitions.
That leaves randomness. Well except for town maps, all outdoor maps will have a random element, you know, downed tree’s, logs, rocks, etc. Dungeons and caves will have rocks, puddles and the like.
The dilemma there is putting a tree on the map… This is 2D, so you cant walk ‘behind’ the tree. The tree is in effect an obstacle. It wont obstruct view, and you can hide behind it, but should it obstruct missile weapons and magic? Magic is inherently.. magical by nature so you can explain that away. And hiding behind a rock should cover you from missile weapons…
There are a lot of edge cases. Its easy to see why in Ultima III, combat was just a plain grid of tiles, all grass or all floor or something, and your placed on one side, with one group of all-same enemies on the other. The smallest increase in complexity opens up such a can of worms.
Posted by
Stu on 03/17 at 11:41 AM
Permalink to this post.
Filed Under :
Computers •
Development •
Fishguts •
Commented on by (1) people. Read or Post
Comments Here
Linked To by (0) blogs. Get a
Trackbacks link here
Now that I finally have a working PSP backend playing nicely for the last week, I nutted out the flow and pseudo code for the combat engine. Looking at the top level flow of 25 lines is nice. It looks so much more do-able than the initial impression.
What is it really, but another abuse of the tile engine utilising different sized tiles (1x1, 1x2, 2x1, 2x2).
Some of the top level stuff is really basic (initialise the loot list to be empty), to the hard (determine placement of enemy parties on map)…
Some things are only as hard as you make them for youself. Right now I am still debating if I will ‘blow’ up and enlarge the current map into the combat map, or load a predefined map based on the square the party is standing on and the square the enemy is standing on (thus allowing ship to shore etc)…
I’ll keep mulling the top level and low level descriptions for a while so I can go in and implement it all at once and not have to do huge backtracks because I overlooked something silly or important
Posted by
Stu on 03/17 at 10:48 AM
Permalink to this post.
Filed Under :
Computers •
Development •
Fishguts •
Commented on by (0) people. Read or Post
Comments Here
Linked To by (0) blogs. Get a
Trackbacks link here
Tuesday, March 11, 2008
OK I believe the PSP port is working as is meant to be right now
Its kinda cool see’ing it on the PSP (since its a more mainstream device than the GP2X)… Still need a hacked firmware to run it so it will never be that awesome since Sony will never open it up… ohwell..
Back to working on the combat engine.......
Posted by
Stu on 03/11 at 09:26 PM
Permalink to this post.
Filed Under :
Computers •
Development •
Fishguts •
Commented on by (0) people. Read or Post
Comments Here
Linked To by (0) blogs. Get a
Trackbacks link here
Monday, March 10, 2008
I made a test PSP drop available and mentioned it on the qj.net forums.. I still have some quirks to work out with HOME key and doing a game exit… It seems I can always get one or the other to work as expected but not both together… sigh…
It playrs a lot better than last nights build so thats good!
Posted by
Stu on 03/10 at 10:12 PM
Permalink to this post.
Filed Under :
Computers •
Development •
Fishguts •
Commented on by (0) people. Read or Post
Comments Here
Linked To by (0) blogs. Get a
Trackbacks link here
Sunday, March 09, 2008
As an addendum to the previous entry today, I managed to play Fishguts on the PSP! Pretty sweet. Its only about 95% as I need to change some of the button handling.
Also the game doesn’t quit correctly, which is odd since all the callbacks are setup…
So anyway, it was a pretty cool feeling seeing it fire up on the PSP
Unfortunately you need a CFW (Custom Firmware) to play it…
Posted by
Stu on 03/09 at 09:31 PM
Permalink to this post.
Filed Under :
Computers •
Development •
Fishguts •
Commented on by (0) people. Read or Post
Comments Here
Linked To by (0) blogs. Get a
Trackbacks link here