RPGDXThe center of Indie-RPG gaming
Not logged in. [log in] [register]
 
Could someone take a look at Quest for a King?
 
Post new topic Reply to topic Goto page 1, 2, 3, 4  Next 
View previous topic - View next topic  
Author Message
-SJ Zero
Guest





PostPosted: Wed Sep 03, 2003 8:29 pm    Post subject: Could someone take a look at Quest for a King? [quote]

I posted it hoping people would compare it to Nietzsche, but it seems that hasn't happened... Any takers?
Back to top  
Happy
JonA's American snack pack


Joined: 03 Aug 2002
Posts: 200

PostPosted: Wed Sep 03, 2003 9:18 pm    Post subject: [quote]

I would probably compare it to Nietzsche, if I knew what the hell that was.


...


The dialog makes me weep tears of vexation.
Back to top  
Rainer Deyke
Demon Hunter


Joined: 05 Jun 2002
Posts: 672

PostPosted: Thu Sep 04, 2003 4:16 am    Post subject: [quote]

My initial impression:
  • Concept is interesting. By contrast, I didn't think much of the concept of Nietzsche.
  • Actual gameplay starts fairly quickly. Another improvement over Nietzsche.
  • Navigation is made unnecessarily difficult by pixel*pixel movement.
  • Party-based combat is an improvement over Nietzsche, but not much of one. Tactics are still primitive at best.
  • Combat is so fast that I don't have time to familiarize myself with the options. That's bad.
  • Lack of savegames is very bad.
  • Game locked up after I pressed space and the up and down arrows a couple of times in the magic menu. That's extremely bad, especially when coupled with lack of savegames. I quit playing at that point.


Overall verdict: It's better than Nietzsche. It's also painfully unfinished, so I'm not going to bother with a full review.
Back to top  
white_door
Icemonkey


Joined: 30 May 2002
Posts: 243
Location: New Zealand

PostPosted: Thu Sep 04, 2003 6:41 am    Post subject: [quote]

well I was playing it.. and I got up to where the king dies.. and he said he marked the map with a place I should go... but instead of leaving the room.. I went up and tried to search the king's body for some cool items.. or for dialog or something.. but *suddenly!* I was back to the start of the game! I was so depressed that all my progress was gone that I instantly quit.

in terms of the gameplay and stuff... I really liked it.. I thought the writing in Nietzsche was slightly better, but even so it was sooo.. cool when you see the chick at the top of the tower and its the same one from neitzsche. You have really good dialog in the game... its not boring like so many others.

the only thing that seemed weird about the combat... is it just me or as you go up levels the combat gets harder and harder instead of easier.. which is kind of different but interesting in its own right. I loved the combat, normal turned based combat is getting real old. I perfer to think on my feet. I didn't end up using any of the special combat moves though.. just attack attacked attacked until the final boss where I used that one move that killed the boss in one hit.

I knew that the king would die though right from the first two or three battles in the tower, because of his extreme power and how easy the game was ;) reminded me of the start of lufia where you go through the final dungeon and kill the final boss at the start of the game, then the game continues 100 years later with the decendants.
Back to top  
-SJ Zero
Guest





PostPosted: Thu Sep 04, 2003 2:57 pm    Post subject: [quote]

  • Navigation is made unnecessarily difficult by pixel*pixel movement.

    What do you mean by that? I find that if you're not looking, P*P and P*T scrolling are essentially the same in terms of navigation,

  • Party-based combat is an improvement over Nietzsche, but not much of one. Tactics are still primitive at best.

    It's the first dungeon. Give the game a while to expose some stragegy. :)

  • Combat is so fast that I don't have time to familiarize myself with the options. That's bad.

    In real life, fighting is frantic. Fighting is fast, and hits are hard or they're useless. That's part of what makes the QFAK battle system fun. I might slow down the first couple battles though.

  • Lack of savegames is very bad.

    And fixed. :)

  • Game locked up after I pressed space and the up and down arrows a couple of times in the magic menu. That's extremely bad, especially when coupled with lack of savegames. I quit playing at that point.


Yeah. The spell scripting system has been a huge hassle. I intend to rewrite it for the next demo. BTW, the lockup you experienced probably stemmed from choosing the last spell -- that's the (THE) major bug in it.

Quote:
Overall verdict: It's better than Nietzsche. It's also painfully unfinished, so I'm not going to bother with a full review.


Hey, that helps. If you want to see a PAINFULLY unfinished game, try the old PRBLM demos. the JRPG engine and QFAK have come immeasurably far since my first attempts at a tile engine. :)
Back to top  
Rainer Deyke
Demon Hunter


Joined: 05 Jun 2002
Posts: 672

PostPosted: Thu Sep 04, 2003 4:11 pm    Post subject: [quote]

-SJ Zero wrote:

What do you mean by that? I find that if you're not looking, P*P and P*T scrolling are essentially the same in terms of navigation,


Squeezing through single tile openings is a lot easier with P*T. Granted, there weren't a lot of single tile openings in Quest for a King, so this isn't really a major problem.
Back to top  
Guest






PostPosted: Fri Sep 05, 2003 2:40 am    Post subject: [quote]

Rainer Deyke wrote:
-SJ Zero wrote:

What do you mean by that? I find that if you're not looking, P*P and P*T scrolling are essentially the same in terms of navigation,


Squeezing through single tile openings is a lot easier with P*T. Granted, there weren't a lot of single tile openings in Quest for a King, so this isn't really a major problem.


heh, actually, walking through those passages is mathematically impossible. Only the fact that my sprite collision detection was essentially broken allowed it to happen. I plan to fix that problem by making doors 2 seperate walkable sprites. That way you can be slightly off and still hit your mark(so to speak).
Back to top  
Happy
JonA's American snack pack


Joined: 03 Aug 2002
Posts: 200

PostPosted: Fri Sep 05, 2003 3:30 am    Post subject: dumbass. [quote]

I beg to differ. You could always, you know, make the character's bounding box smaller. But that would mean you would actually have to code a decent p*p engine.


see:

Code:

                    switch(direction) {
                   
                        case OBJECTUP :
                       
                               object[object_index].y_buildup -= spaces;
                                               
                               if(object[object_index].y_buildup < 0)
                                {
                                   object[object_index].ty--;
                                   
                                if(maps.map[4].tile[object[object_index].tx][object[object_index].ty] !=1\
                                   && object[object_index].ty > -1)
                                  {
                                     object[object_index].y_buildup = object[object_index].y_buildup+16;

                                                    }
                                                    else {
                                                        object[object_index].ty++;
                                                        object[object_index].y_buildup += spaces;
                                                        ooo=1;
                                                    }
                                                }
                                                if(ooo==1) ooo=0;
                                               
                        break;
                        case OBJECTDOWN :
                                                object[object_index].y_buildup += spaces;
                                               
                                                if(object[object_index].y_buildup > 16){
                                                   
                                                    object[object_index].ty++;
                             if(maps.map[4].tile[object[object_index].tx][object[object_index].ty] !=1){
                                                            object[object_index].y_buildup=object[object_index].y_buildup-16;

                                                    }
                                                    else {
                                                        object[object_index].ty--;
                                                        object[object_index].y_buildup -= spaces;
                                                        ooo=1;
                                                    }
                                                }
                                                if(ooo==1) ooo=0;

                        break;
                        case OBJECTLEFT :
                                                object[object_index].x_buildup -= spaces;
                                               
                                                if(object[object_index].x_buildup < 0){
                                                   
                                                    object[object_index].tx--;
                           if(maps.map[4].tile[object[object_index].tx][object[object_index].ty] !=1 \
                              && object[object_index].tx > -1){
                                                            object[object_index].x_buildup=object[object_index].x_buildup+16;

                                                    }
                                                    else {
                                                        object[object_index].tx++;
                                                        object[object_index].x_buildup += spaces;
                                                    }
                                                }
                        break;
                        case OBJECTRIGHT :
                                                object[object_index].x_buildup += spaces;
                                               
                                                if(object[object_index].x_buildup > 16) {
                                                   
                                                    object[object_index].tx++;
                                                    if(maps.map[4].tile[object[object_index].tx][object[object_index].ty] !=1){
                                                            object[object_index].x_buildup=object[object_index].x_buildup-16;

                                                    }
                                                    else {
                                                        object[object_index].tx--;
                                                        object[object_index].x_buildup -= spaces;
                                                    }
                                                }
                        break;
                    }


Though, that code's kind of specialized. Also; I first wrote it about a year or two ago, so it may or may not be obsolete. I'm not sure. Though last time I worked with it I had trouble integrating my y and x sorters. Which I'm sure you would too, especially since the code is C based, and you're obviously working with BASIC.

The basic idea is this:

tile_height = 16
tile_width = 16

character_bounding_box_height = 6
character_bounding_box_width = 6
character_bounding_box_x = 5
character_bounding_box_y = 5

That means that the bounding box starts at 5,5 pixel (relative to the character sprite's 0,0 position (upper left)) and extends to the the 11,11 pixel.

Now, for navigation you simply store the character's map coordinates (which is t*t) and increment the pixel offset with each movement. Once it reaches over the size of the tiles, you increment the map coordinate accordingly.

So for rendering you have two sets of coordinates for a character: (map_x, map_y) and (pixeloffset_x, pixeloffset_y) and you just calculate in the pixel offset:

blit character at (map_x*sizeof_tile_x)+pixeloffset_x, (map_y*sizeof_tile_y)+pixeloffset_y;

For collisions you simply find where the bounding box hit. That is:

for a character moving left check if:
(((map_x*sizeof_tile_x)+pixeloffset_x) -character_bounding_box_x) == a_multiple_of_sizeof_tile_x;
for a character moving right check if:
(((map_x*sizeof_tile_x)+pixeloffset_x)+(character_bounding_box_x+character_bounding_box_width) == a_multiple_of_sizeof_tile_x;

like-wise for the y axis. (I'm rather drunk and bored of writing this already.)

Also when you get a collsion: decrement the amount of your increment (this allows for various speeds, that is, walk, run, etc).

EDIT: I just took another look at that code and: Holy fucking christ, what the fuck was I thinking?
Back to top  
white_door
Icemonkey


Joined: 30 May 2002
Posts: 243
Location: New Zealand

PostPosted: Fri Sep 05, 2003 3:43 am    Post subject: [quote]

I don't use bound boxes in my games, I use bounding sprites, then do a perfect pixel collision test for the shadow of the character against the bounding sprites of the walls, edges, and stuff. It means if you are just off the edge of a door.. the character will slide in to it.
Back to top  
Guest






PostPosted: Fri Sep 05, 2003 11:22 am    Post subject: Re: dumbass. [quote]

Quote:

I beg to differ. You could always, you know, make the character's bounding box smaller. But that would mean you would actually have to code a decent p*p engine.


Since it's blatantly obvious you haven't seen my code(and quite possibly haven't seen the game itself), I'd choose my words more carefully if I were you. My movement routines work just fine so long as I stay away from already ugly FF-style one sprite doors, since you can't easily fit a 20x20 guy into a 20x20 hole without it being a pain in the ass anyway (which is what Rainer Deyke was commenting on, p2p movement making it more difficult to make it into tiny doors), I'd much rather have a fast and elegant collision detection that doesn't have any glitches than a slow hack-job that was a bitch to maintain -- that's why I moved away from a system identical to the one you were proposing to the one I'm using now.

(and to the other guy who replied, I was going to write something like that, but after my particle system, dynamic water creation, and realtime shadows, I figured I didn't have the number crunching power left to be doing that for every sprite I encounter -- I want this to run on a lower end pentium!)
Back to top  
Happy
JonA's American snack pack


Joined: 03 Aug 2002
Posts: 200

PostPosted: Fri Sep 05, 2003 9:47 pm    Post subject: Re: dumbass. [quote]

Quote:
Since it's blatantly obvious you haven't seen my code(and quite possibly haven't seen the game itself), I'd choose my words more carefully if I were you.

...

I'd much rather have a fast and elegant collision detection that doesn't have any glitches than a slow hack-job that was a bitch to maintain -- that's why I moved away from a system identical to the one you were proposing to the one I'm using now.


Wow! Sorry, I was actually trying to be helpful. I have seen the game in action, and I was really trying my damnedest to be impressed. And actually, my method was fast, very fast. It wasn't a hack-job either. I took the bounding-box method and optimized it for my engine. I realize that the code I posted is a bit messy and such, but it worked without any glitches. It was when I tried to put my x and y sorters in that I had trouble, but that was only because I was stupid and optimized the whole thing before I was finished adding features.

Quote:
(and to the other guy who replied, I was going to write something like that, but after my particle system, dynamic water creation, and realtime shadows, I figured I didn't have the number crunching power left to be doing that for every sprite I encounter -- I want this to run on a lower end pentium!)


Realtime Shadows? Where the fuck was that? (I even redownloaded it (as I had deleted it) to make sure I didn't miss the effect.)

Also, if you want that to run on a lower end pentium i'd suggest not doing it in BASIC. My engine ran on a lower end pentium (well, pentium 133 I think it was.(something like that)) at about 40+ fps. That was with full collision detection (on all (n)pc's(yeah, the npcs actually move) ) and 4 layers of tiles (you know; background, mid-ground, foreground, whether effects (I didn't really use the mid-ground, but it was there! (And eating up cycles displaying the same thing as the background..)). But! Oh yeah! It was written in C, so I'm sure you'll dismiss it as a "slow hack job" or some such nonsense like that.
Back to top  
korndog
I wanna be a ballerina!


Joined: 03 Jun 2003
Posts: 24
Location: Texas

PostPosted: Sat Sep 06, 2003 12:00 am    Post subject: [quote]

On the webpage it says to hit '~' and type 'ObjectShadows 1' to get the shadows.

And, I agree that the dialog makes one's eyes water. The statements are too wordy. For example, don't use "Indeed I am" when we know the answer was going to be 'yes' all along.

Perhaps allowing diagonal movement would make navigation easier. Other than those things, everything else was better than Nietzsche, imo.
Back to top  
LeoDraco
Demon Hunter


Joined: 24 Jun 2003
Posts: 584
Location: Riverside, South Cali

PostPosted: Sat Sep 06, 2003 12:31 am    Post subject: [quote]

I would comment upon it; however, as I couldn't get the fucker to run on my system, I cannot.
_________________
"...LeoDraco is a pompus git..." -- Mandrake
Back to top  
-SJ Zero
Guest





PostPosted: Sat Sep 06, 2003 1:04 am    Post subject: [quote]

LeoDraco wrote:
I would comment upon it; however, as I couldn't get the fucker to run on my system, I cannot.


WHAT?! Please, let me know which operating system you're running, along with any error messages it gives you! Also, try just running JRPG.EXE, not the batch file, and tell me if that makes any difference!
Back to top  
Guest






PostPosted: Sat Sep 06, 2003 1:08 am    Post subject: [quote]

korndog wrote:
On the webpage it says to hit '~' and type 'ObjectShadows 1' to get the shadows.

And, I agree that the dialog makes one's eyes water. The statements are too wordy. For example, don't use "Indeed I am" when we know the answer was going to be 'yes' all along.

Perhaps allowing diagonal movement would make navigation easier. Other than those things, everything else was better than Nietzsche, imo.


In some cases, I do that on purpose -- for instance, I tend to keep things short when you're talking with regular people, but when Xan speaks to the elder, I switch to the more flowery language because of who it is. I'll see what I can do in terms of knocking down "indeed I am" to something more managable. :)

As for the diagonal movement, consider it done. I just need to write the character behaviours for them (the main character rarely does things directly -- his movements are directed by the same behaviour system that allows the NPCs in the pub to play, so it won't be paticularly hard to implement quickly.

Thanks for the feedback.
Back to top  
Post new topic Reply to topic Page 1 of 4 All times are GMT
Goto page 1, 2, 3, 4  Next 



Display posts from previous:   
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum