Jump to content
  • Advertisement
Sign in to follow this  
  • entries
    19
  • comments
    29
  • views
    11263

About this blog

Detailing my progress on Primal Damage, a futuristic first person shooter.

Entries in this blog

 

New Screens

Just wanted to post an update with a few screenshots. I'm in the "building" phase, trying to get the first map created, so that other, more important features of the game can be coded (collision, networking, etc.) :D








mcguile25

mcguile25

 

Terrain

So I've taken the last couple of days to create a simple height-mapped terrain for outdoor levels. It still needs quite a bit of work, but I think it's looking pretty good. I added in some range-based fog as well. Let me know what you guys think so far (please excuse the crap texture and general look of the hills...)




mcguile25

mcguile25

 

Temple Render

The journal updates have been few and far between, mainly because I've been working on some of the core functionality of the graphics engine. Just implemented lightmap integration for the level geometry. Here are couple of screenshots showing this:







Here is the first render of our temple level. This is directly from 3D Studio Max. We are still working on finalizing all of the rooms and then we will export them for the game engine.



mcguile25

mcguile25

 

Website V1.0

Hey guys. Just finished up version 1.0 of our website for PD. Please check it out here. I'd appreciate any useful criticism (good and bad) about the design and functionality of the site. The banner and screenshots are temporary for now.

mcguile25

mcguile25

 

Temple Sketches

I'm working with my artist trying to get some 2D sketches drawn detailing our first arena, the Temple. We're on V4 of our concept, so here is V1-V3 for your enjoyment:

Version 1 (by me :) -- This was a very (very!) rough sketch that I initially came up with. Problem with this is the lack of covers and lack of overall structure :D


Fl




F2




Version 2 -- This proved to be too circular for its own good. Notice the inclusion of a canal system and a waterfall. How neat would this be!!





Version 3 -- V3 is less circular and more varied.





Version 4 and possibly a Version 5 are coming in the next few days. We're going to be removing the graveyard from V3 and adding in more doors and cover areas.

Any thoughts?

mcguile25

mcguile25

 

Getting rid of nasty code

You know, sometimes you just write a piece of code and say, "What the $*#@ was I thinking?" Well, I had that moment today. I was working on creating instances of my specific weapon types and had the following code:


// create 1 of each weapon type available for the player
for ( int i = 0; i {
// regular pistol
if ( m_weaponTypes[ i ].GetID() == RESOURCE_WEAPON_PISTOL )
{
CPistol *pistol = new CPistol;
if ( !pistol->Create( m_displayDevice, WEAPON_VIEW_FPS, PISTOL_TYPE_REGULAR ) )
{
delete pistol;
return false;
}
m_playerWeapons.push_back( pistol );
}
// pistol silencer
else if ( m_weaponTypes[ i ].GetID() == RESOURCE_WEAPON_PISTOL_SILENCER )
{
CPistol *pistol = new CPistol;
if ( !pistol->Create( m_displayDevice, WEAPON_VIEW_FPS, PISTOL_TYPE_SILENCER ) )
{
delete pistol;
return false;
}
m_playerWeapons.push_back( pistol );
}
// .........AND SO ON FOR CRocketLauncher, and any other dervied class types
}




This code violated my rule of cleanliness and efficiency. So I decided to scrap this for a psuedo weapon factory system. So the above code now becomes:


for ( int i = 0; i {
CWeapon *newWeapon = GetWeaponFactory()->Produce( m_weaponTypes[ i ].c_str(), WEAPON_VIEW_FPS );
if ( !newWeapon )
{
return false;
}

m_playerWeapons.push_back( newWeapon );
}





Much better, huh?

mcguile25

mcguile25

 

Goodbye FMOD, Hello OpenAL!

I decided to spend the last two days scraping FMOD and implementing OpenAL into the engine for audio. Hey, who wants extra license costs :) So now the game only supports the OGG file format. I didn't really know a lot about OGG before implementing this format, but now I really like it. The format is small and sounds good.

The audio engine now supports creating a generic list of sound effects and one streaming sound. When playing a sound effect, you can specify a 3D position and velocity so enemy gunfire will sound faint if you are father away, and it will sound close if you are closer to the enemy :)

So far, I think I like OpenAL better than FMOD. The thing going for FMOD is that it's _really_ easy to setup. For OpenAL, you have to do a lot more initially, but it's well worth it.


More to come soon :)

mcguile25

mcguile25

 

OUCH!

Woo, the last 5 hours were just crazy. The last two screenshots showed the gun in a FPS cam, but I didn't have a control scheme in place. So I took the time to implement the basic FPS scheme, with the keys moving/strafing and the mouse rotating around the x and y axes. The game is making some great progress, especially in the last few days. I'm hoping to keep this journal updated A LOT more often than I have been recently. Here's two new shots from the engine. I'll start showing some more varied screenshots over the next few days.




mcguile25

mcguile25

 

Firing Squad!

Greetings my excellent friends. Man, it's been a long and productive month for PD (my cool acronym for Primal Damage :). Artists are going to start working on the temple level the first week of February, until then here's what I've been working on:

1) Basic map save/load code done
2) All resources now reside in external XML resource file
3) Implemented a basic sky system
4) Gun now attached to camera in FPS view
5) Bot highlights
6) Implemented audio and SFX engine
7) Ugly-ass loading screen (hey, better than staring at blank screen!)

Here's two screens I took this morning. The game is a lot more far off than what you're seeing here, just thought they were cool looking!





Definitely hope to have screens of the temple level probably middle of February!

mcguile25

mcguile25

 

More game news

Well, it's been a while since my last post. I blame it on my XBox 360 and XBox Live! Just so people know, this new system is really awesome. And I didn't even like the original XBox. I love playing deathmatch on the new Perfect Dark game and playing co-operatively in the Co-Op mode online.

But I have done a lot of programming in the past few weeks. Most specifically, I just finished up our audio engine. We're using FMOD for the implementation. I had written a DirectSound class to handle audio before, but FMOD just seemed too enticing. It was really simple to setup and recommend it (http://www.fmod.org) for those curious about what audio code library to use for your game. After putting in some test music and sound effects, I've just re-realized how much better sound makes a game. It definitely gives it the atmosphere it needs.

On other coding news, I completely removed the "hardcoded" resource.h file we were using (which had all strings, image paths, etc.) and replaced it with an XML file. We're using Tinyxml (http://sourceforge.net/projects/tinyxml) for processing the XML elements. I really like TinyXML, it's easy to use and supposedly pretty efficient. Also added version number to the XML file to keep track of what version of the game we're on.

Unfortunately, there's no pictures this month as we're really working hard to get our first level created. My artists are going to be modelling a 3D Greek Temple type level as the first deathmatch arena and then they will be exporting the various individual "pieces" into .x files that the game will load. We're pretty much using .x files for all 3D objects and not using any custom vertices created with game code. I just hope we don't have any problems with collision using this method...

Well, have a great New Year's and should have some screenshots and more info soon. Cheers.

mcguile25

mcguile25

 

Shaken not stirred..

For my first non primal damage entry..

I decided to spend my thanksgiving holiday playing videogames, specifically GoldenEye for the N64. I've already beaten the entire game on all difficulties and gotten all 23 cheats. That was several years ago and it took a good year to do.

So I decided to see if I could beat everything within one weekend. And goddamnit, I did! It took me only 3 days to beat every mission on every difficulty level and I got all 23 cheats. Now if that's not a gaming achievement, I don't know what is!!

Hope you guys are enjoying your thanksgiving weekend. I know I am :)


mcguile25

mcguile25

 

First Weapon

Hey everybody, I've been working with my animator on weapons. Here's a shot of our first basic weapon, the Pistol:



Gloved:


I think I'll come up with cooler names for the guns later.

mcguile25

mcguile25

 

Resource Manager

I've been pretty dang efficient as of late in terms of programming and getting things done for the game. I just finished implementing a resource manager for the game. It turned out very well and it wasn't as hard as I thought it was going to be:

I have a base class for resources called CResource which every resource will derive from. A resource holds a name (filename) and a reference count. So that was pretty easy. Next I've got a templated resource manager called CResourceManager. This class allows for creating and retrieving resources and releasing them. Like DirectX, the resource manager increments the reference count when you retrieve or create a resource and decrements it when you release a resource. When that count gets to 0, the manager deletes that resource from its memory pool. The other cool thing is, since this is a resource manager, is that the manager will return you a pointer to existing resource memory if you try to call Create on a resource that already exists. Here's the skeleton class for anyone interested:


template class T>
class CResourceManager
{
private:

// this hash map represent our resource list
std::map m_resources;

public:

// destructor deallocates all dynamically created resources that remain
~CResourceManager();

// creates a resource given a filename; if it already exists this
// function simply returns the allocated resource, otherwise if it doesn't
// exist we create it and return the pointer
T *CreateResource( const char *resourceName );

// retrieves the resource given a resource name and increments
// the reference count on the resource; returns NULL if the resource doesn't exist
T *GetResource( const char *resourceName );

// releases resource with the given resource name if it's reference
// count has reached zero
void ReleaseResource( const char *resourceName );

// returns the number of resources we have allocated
int GetResourceCount();
};






Tomorrow I'm going to start redoing the way I am rendering objects. I need to sort my objects by texture so as only to call SetTexture when I really need to call it. I'm just glad that I got the resource manager implemented as it will save a ton of memory in the game (imagine having 50 walls in the game having the same texture, meaning 50 instances of the same texture -- UGH!).

mcguile25

mcguile25

 

Help Wanted

Just wanted to let you all know we're on the lookout for some graphical help for the game. Check this thread out and let me know if you can help! Thanks!

https://www.gamedev.net/community/forums/topic.asp?topic_id=357708

mcguile25

mcguile25

 

Game Design Document

For those interested, I've gone ahead and posted the Game Design Document for Primal Damage here. It's actually quite small as I really didn't go into massive detail.

I've modelled a lot of the player statistics after Perfect Dark (N64). I really loved how that game kept track of pretty much everything you did in multiplayer (ammo used, head shots, kills, deaths, wins, losses, firing accuracy, etc.). So here's what I will be keeping track of in Primal:

-Cash
-Kills
-Deaths
-Accuracy (0-100%)
-Ammo Used
-Games Played
-Games Won
-Games Lost
-Time (0:00:00)

Any other suggestions?

And here are the player titles (possibly tentative ordering/names):

12: Recruit
11: Novice
10: Soldier
9: Trooper
8: Commando
7: Guerrilla
6: Badass
5: Warmonger
4: Enforcer
3: Executioner
2: Slayer
1: Warrior

As far as the game is concerned, it's going really well. Last night I implemented terrain and wall mesh classes, and added the ability to create them directly from the map editor. Wrote some picking code so they become highlighted once you mouse over them. Today's goal is to implement the ability to activate meshes, move them around, change their size and position dynamically, etc. Once this is done, I can start building some decent levels and be able to post some in-game screenshots here.

mcguile25

mcguile25

 

First game info

Wow, it's been a month since my last (and first) post. Sorry about that. I've been working hard on a 3D first person shooter project I started on September of this year. The name of the game is Primal Damage. The name is sort of ironic since this will be more futuristic than ancient. Here's some quick info about the game:

It's the very distant future. Not content with ordinary life, a group of rich tycoons construct dozens of illegal combat arenas for high-priced death matches. War veterans, drifters, even regular citizens are allured by the ultimate hunt: human beings. Competitors are thrown into these arenas bare handed and must scramble to find anything they can to stay alive: armor, weapons, vehicles -- anything! The last man standing is awarded a handsome reward of cash and glory.

Game Features:

Battle in a dozen unique, futuristic fighting arenas
Team-based and deathmatch game modes
Play with or against up to 12 bots
Team up and fight with players in Online mode
Commandeer one of several vehicles
Futuristic, mood-setting soundtrack
Earn bragging rights by increasing your player statistics and title


The game is coming along well. Here is a screenshot of our first character, Snake:



Snake is basically a real kick-butt type guy who really doesn't care about anyone but himself. He's been through all types of war and is more or less immune to its effects at this point. I think the model looks great. Our artist did a great job!


As far as the game is going, currently I've got a lot of code already written. I've got support for animated/static models, Direct Input, an in-progress homebrewed GUI (that looks ugly at this point :), skybox support, Match Setup screen, and a lot more. The game is obviously not really playable at this point, but I'm definitely making headway.

Right now I'm working on the map editor for the game that will allow you to place models, character and weapon spawn points, create simple meshes like ramps, walls, ceilings, terrain, etc. The editor is tied directly into the game engine and not external. I tried using MFC first, but I really don't want to duplicate my code and I'd much rather use the same base code while concurrently developing the engine and editor. Plus, MFC is a pain in the ass too :)

Oh yeah, we've also got a basic looking website going at this point -- http://www.primaldamage.com. Please ignore the ugly logo and the look of the site; all this will change soon!

I'm really hoping to have daily or every-other-day updates to this journal. In-game screenshots will come soon as the game becomes more playable and nicer looking.

OK, back to work...

PS -- Please leave me any comments if need be. I'll try to respond to all questions.

mcguile25

mcguile25

Sign in to follow this  
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!