First Qonquer Map Released
Wednesday, March 12th, 2008Ankh released a map for Qonquer and I’m very happy as this is the first map made by someone else for the mod!
It’s a fairly simple arena with straight up combat. Right up Qonquer’s alley!
Ankh released a map for Qonquer and I’m very happy as this is the first map made by someone else for the mod!
It’s a fairly simple arena with straight up combat. Right up Qonquer’s alley!
New version!
http://www.wantonhubris.com/qonquer/Qonquer.html
Direct download:
http://www.wantonhubris.com/qonquer/Qonquer_v1_1.zip
Anyone who found it too easy before will hopefully find that it scales a little better if you play on Hard or Nightmare.
Changes:
- added “impulse 12” for cycling to the previous weapon with ammo
- fixed the ‘Elder Arena’ on Easy skill (no monsters were spawning!)
- minions will no longer hurt each other or the player
- made the minions stand further away from the player so they won’t trap you in the corner
- increased various limits, tweaked various times, based more values on skill level
- added finale screen (take a screenshot, impress your friends)
- proper respawn for the player after finale
So I was struggling with trying to set up an ending cinematic screen for Qonquer. I wanted to do a screen where it would spit out some stats on your game and give you some closure rather than just sitting there staring up from the floor in your dead body.
However, when I tried to customize the text being sent to the SVC_FINALE screen in QuakeC I discovered that you can’t send a dynamic text block. You can only send a static string. Even better, you can’t even send multiple strings. You can only send one if you’re using the WriteString function. Nasty.
So Preach over at func_msgboard gave me a link to some source code that included routines for spitting out chars to a channel in QuakeC. There were 8 versions of the function, each sending from 1-8 characters at a time to the channel (I named them pr1() through pr8() in my code base). I thought I was home free. Nope! Those emit values, not characters. Which means that if you want to spit out, for example, the word “Qonquer” you need something like this in your code:
pr7( 81,111,110,113,117,101,114 );
Those numbers are the ASCII character codes for each letter. Yeah, not exactly intuitive to read OR to write.
So what I ended up doing was writing a real simple Cocoa application to help me out. It will take a text string and split it up into the necessary function calls to get that text into the SVC_FINALE screen.
For example, let’s say I wanted to spit out “[Qonquer] - game over!”. I would use my program and it would generate this:
// [Qonquer] - game over!
pr8( 91,81,111,110,113,117,101,114 );
pr8( 93,32,45,32,103,97,109,101 );
pr6( 32,111,118,101,114,33 );
As you can see, it breaks the string up into multiple calls because QuakeC can only handle 8 arguments in any given function. It also emits a comment line at the top so you can see what those lines are supposed to be emitting.
Here’s a screenshot of the utility in action:
I need to add some checkboxes and things to this screen to support adding newlines and things like that but this is basically it! This will help me out a lot on this and future QuakeC projects. When it’s done, I’ll make the source available with the rest of the Qonquer mod.
If you’re interested in reading up on Qonquer, downloading it, or creating your own maps for it:
Have fun!
Inside3D wrote up a nice review of the mod. Check it out!
I was hammering on the last arena this week and I was trying to come up with a decent medieval theme. It just wouldn’t click! I rebuilt the damned thing twice and it always looked shoddy to me. So I switched it out for a copper theme and it’s going much better.
The thing is, I’m doing this final arena as a floating level. This is causing my VIS times to get a little ugly but still manageable with careful brush work. Again, it’s a good challenge. How to keep VIS reasonable when the level doesn’t have any good walls or dog legs in it? I guess we’ll find out.
As I build the arenas for Qonquer, I find that I’m really enjoying the challenges of level design at this level again. I use Quake in it’s pure software form in the engine that id shipped. This means I have to worry about r_speeds and all of the fun that comes with that.
Quake can only do about 800 polygons before it starts dropping polys and you see entities flickering. It’s been a great challenge for me to design within this constraint again. I shell out an area with basic shapes and then start adding detail until the r_speeds monster slaps me on the wrist and says “enough!”. There’s a great feeling of satisfaction once you’re done tearing up an area and redesigning it so that it runs better and then that moment comes when you’re hovering at about 780 and you decide, “OK, that’s enough”. And you’re done.
I love it. Modern engines don’t care much about polygons anymore and throw 5,000+ triangle meshes around like they were nothing. It’s nice to get back to my roots. It’s fun and it keeps the mental wheels greased.
Programming is funny sometimes. Qonquer spawns minions that will fight for you as the game progresses. They target other monsters and wage war on your behalf. However, they don’t really have the ability to handle zombies which have to be gibbed. Easy enough, I thought, I’ll just make them ignore anything with classname == “monster_zombie”. Well, that would have been simple except for the 1/2 hour debugging session where I finally figured out that I’m dynamically spawning monsters into the arena but not setting their classnames correctly. Once I fixed that, my code for ignoring zombies magically started working. Woot!
My latest project is called “Qonquer”. Basically, it tests how long you can hold out against ever increasing waves of enemies. There are many details to explain and lots of work left to be done but I figured a status update was in order. Below are some shots of the initial combat arenas I’ve been building.
I’m hoping to be done in the near future!