Jump to content

Creating my own mod


Recommended Posts

Posted

Hello there beloved star wars fans,

I am quiete new here to this forum but it seems like I am here on the right place for the beginning. I first reached contact with Jedi Outcast with 11 years and after 3 years I realized that there is another jedi academy game.

Now I am 18 and I had the big wish to create my own demo level based on JKA even if i had to learn these programs to create it.

 

It should include such as:

 

-> own sequences / scene shots like in the JKA game

 

-> own animations/moves/abilities (mostly keep all JKA animations but I want to bring my own ones, probulary with Softimage)

 

-> complete new map, complete new model/skin design

 

 

I know this sounds a bit too much wanted but I think and hope if I invest enough time into it, it wont fail. (that's the spirit isn't it?)

But my main problem/question is can I use the UDK (unreal engine 4 / unreal developement kit) for it just like the Movie Battles III team did it?

Because if yes then the models/skins and maps would look more realistic compared to the JKA game.

 

Edit: I won't be using any Unreal Engine 4 stuff but I will continue working on my own JKA mod.

 

Anyway that's for the first, hope someone's going to help/explain.

 

- Mand'alor

Posted

You're stuck with JKA's graphics, unfortunately. You can make your map look better than the base JKA maps by using models rather than blocky brushwork.

 

There is a better renderer for JKA (does normal maps amongst other things) but it's nowhere near done and doesn't have anyone actively working on it sadly.

Posted

You can create level design in Unreal Engine and have it look more impressive and have the same functions as maps in Jedi Knight - but you won't be able to run the game Jedi Academy on that engine, even if you tried porting over gameplay or something like that. What Movie battles III are doing is more like making a different game apart from Jedi Knight altogether, which of course means a lot of work and re-creating assets, gameplay, animations and levels etc.

 

So if you want to modify this game, it has to be a modification for this game on this engine :)

If you want to carry over gameplay, animations etc to UDK... legal issues set aside, that would not be a realistic approach, and would probably surpass the ambition of all or most other projects that already have several team members on JKhub.

 

With all that said, there is still very much you can do with Jedi Academy, and with the in-progress rend2 renderer, it will be possible to make it look many times more impressive than before.

 

Some examples:

http://jkhub.org/topic/2804-rd-rend2/?p=52656

http://jkhub.org/topic/1120-moonbase-labs/?p=51424

  • 6 months later...
Posted

It has been some time and now I continue working on the gameplay for my mod.

 

But now I'm having a little problem. As you can see in the picture there is a custom pistol but there are no textures on it somehow.

 

I replaced the blaster_pistol folder with my custom one. The path is assets1/models/weapons2/blaster_pistol.

 

So how do I fix this?

 

crywpx9q.jpg

z3filus likes this
Posted

Make sure the path is correct - it should be weapons2, not weapon2, also make sure the texture paths are correct.

 

Nevermind I fixed it myself but thanks for your reply :D

Posted

Fixed the textures. There it is: The blaster looks fine to me. A very small success but I am happy with it :-) Gonna continue improving the gameplay.

 

rogwpe88.jpg

Posted

Well, don't know much of this project of yours, but those screenshots certainly look interesting.

 

Well thank you alot for supporting!

 

 

 

Now I am a bit stucked what I am trying to achieve is that you will be able to kick with your leg while holding a blaster and I thought I will replace it with the right mouse click.

 

So instead of loading a shot you'll just kick your enemy with the leg. But how do I get this done? Hope someone can help me out here.

 

Also how do I move this topic here into the WIP section?

Posted

Pretty sure that feature doesn't exist in weapons.dat. Luckily, it exists for sabers, so the coding part would probably be decently simple.

Mand'alor likes this
Posted

So I would need to edit the sabers.dat?

 

Anyone of you who could explain me how to get this done?

I don't really have a clue.

Posted

weapons.dat can't be edited to do this, just to clarify. He's saying you need to edit the code involved with weapons.dat. Add a new fire function that does kicking. This should be easy-ish for a beginner, provided you want to take the time.

Tempust85 likes this
Posted

The are a few simple ways of adding weapon kick.

 

The best way is through code.

to avoid confusion i added a new button command.


//
// usercmd_t->button bits, many of which are generated by the client system,
// so they aren't game/cgame only definitions
//
#define	BUTTON_ATTACK			1
#define	BUTTON_TALK				2			// displays talk balloon and disables actions
#define	BUTTON_USE_HOLDABLE		4
#define	BUTTON_GESTURE			8
#define	BUTTON_WALKING			16
#define	BUTTON_USE				32			
#define BUTTON_FORCEGRIP		64			
#define BUTTON_ALT_ATTACK		128
#define	BUTTON_ANY				256			
#define BUTTON_FORCEPOWER		512			
#define BUTTON_FORCE_LIGHTNING	1024
#define BUTTON_FORCE_DRAIN		2048

#define	BUTTON_FREE     		4096		//+button12
#define	BUTTON_KICK	            8192		//+button13
#define	BUTTON_BLOCK			16384		//+button14

#define	MOVE_RUN			120

dont forget to add the button to the menus



	{"+button9",        -1,					-1,		-1,	-1},
	{"+button10",       -1,					-1,		-1,	-1},
	{"+button11",       -1,					-1,		-1,	-1},
	{"+button12",       -1,					-1,		-1,	-1},
	{"+button13",       -1,					-1,		-1,	-1},
	{"+button14",       -1,					-1,		-1,	-1},
	{"+button15",       -1,					-1,		-1,	-1},

	{"victory",         -1,					-1,		-1,	-1},
	{"dropsaber",		-1,					-1,		-1, -1},
	{"proneup",		    -1,					-1,		-1, -1},
	{"pronedown",		-1,					-1,		-1, -1},
	{"saberdown",		-1,					-1,		-1, -1},

};

then just pop the button command in bg pmove c

static void PM_Weapon( void )
{


	// make weapon function
	if ( pm->ps->weaponTime > 0 )
	{
		pm->ps->weaponTime -= pml.msec;
	}
	else
	{
		if (pm->cmd.buttons & BUTTON_KICK)
		{ //ok, try a kick I guess.//allow them to do the kick now!
			if (!BG_KickingAnim(pm->ps->torsoAnim) &&
				!BG_KickingAnim(pm->ps->legsAnim) &&
				!BG_InRoll(pm->ps, pm->ps->legsAnim) &&
				!BG_KickMove( pm->ps->saberMove ) &&
				pm->ps->groundEntityNum != ENTITYNUM_NONE)
			{
				int kickMove = PM_KickMoveForConditions();
				
				if (kickMove != -1)
				{
					if ( pm->ps->groundEntityNum == ENTITYNUM_NONE )
					{//if in air, convert kick to an in-air kick
						float gDist = PM_GroundDistance();
						
						if ((!BG_FlippingAnim( pm->ps->legsAnim ) || pm->ps->legsTimer <= 0) &&
							gDist > 64.0f && //strict minimum
							gDist > (-pm->ps->velocity[2])-64.0f)
						{
							switch ( kickMove )
							{
							case LS_KICK_F:
								kickMove = LS_KICK_F_AIR;
								break;
							case LS_KICK_B:
								kickMove = LS_KICK_B_AIR;
								break;
							case LS_KICK_R:
								kickMove = LS_KICK_R_AIR;
								break;
							case LS_KICK_L:
								kickMove = LS_KICK_L_AIR;
								break;
							default: //oh well, can't do any other kick move while in-air
								kickMove = -1;
								break;
							}
						}
						else
						{ //off ground, but too close to ground
							kickMove = -1;
						}
					}
				}
				if (kickMove != -1)
				{
					int kickAnim = saberMoveData[kickMove].animToUse;
					
					if (kickAnim != -1)
					{
						PM_SetAnim(SETANIM_BOTH, kickAnim, SETANIM_FLAG_OVERRIDE|SETANIM_FLAG_HOLD,100);
						if (pm->ps->legsAnim == kickAnim)
						{
							pm->ps->weaponTime = pm->ps->legsTimer;
							return;
						}
					}
				}
			}
			//if got here then no move to do so put torso into leg idle or whatever
			if (pm->ps->torsoAnim != pm->ps->legsAnim)
			{
				PM_SetAnim(SETANIM_BOTH, pm->ps->legsAnim, SETANIM_FLAG_OVERRIDE|SETANIM_FLAG_HOLD,100);
			}
			pm->ps->weaponTime = 0;
			return;
		}
	}





			else if ((pm->cmd.buttons & BUTTON_KICK)|| (pm->cmd.buttons & BUTTON_ALT_ATTACK))
			{ //kicks
				if (!BG_KickingAnim(pm->ps->torsoAnim) &&
					!BG_KickingAnim(pm->ps->legsAnim) &&
					!BG_InRoll(pm->ps, pm->ps->legsAnim) &&
					!BG_KickMove( pm->ps->saberMove ) &&
					pm->ps->groundEntityNum != ENTITYNUM_NONE)
				{
					int kickMove = PM_KickMoveForConditions();

					if (kickMove != -1)
					{
						if ( pm->ps->groundEntityNum == ENTITYNUM_NONE )
						{//if in air, convert kick to an in-air kick
							float gDist = PM_GroundDistance();
							//let's only allow air kicks if a certain distance from the ground
							//it's silly to be able to do them right as you land.
							//also looks wrong to transition from a non-complete flip anim...
							if ((!BG_FlippingAnim( pm->ps->legsAnim ) || pm->ps->legsTimer <= 0) &&
								gDist > 64.0f && //strict minimum
								gDist > (-pm->ps->velocity[2])-64.0f //make sure we are high to ground relative to downward velocity as well
								)
							{
								switch ( kickMove )
								{
								case LS_KICK_F:
									kickMove = LS_KICK_F_AIR;
									break;
								case LS_KICK_B:
									kickMove = LS_KICK_B_AIR;
									break;
								case LS_KICK_R:
									kickMove = LS_KICK_R_AIR;
									break;
								case LS_KICK_L:
									kickMove = LS_KICK_L_AIR;
									break;
								default: //oh well, can't do any other kick move while in-air
									kickMove = -1;
									break;
								}
							}
							else
							{ //off ground, but too close to ground
								kickMove = -1;
							}
						}
					}

					if (kickMove != -1)
					{
						int kickAnim = saberMoveData[kickMove].animToUse;

						if (kickAnim != -1)
						{
							PM_SetAnim(SETANIM_BOTH, kickAnim, SETANIM_FLAG_OVERRIDE|SETANIM_FLAG_HOLD,100);
							if (pm->ps->legsAnim == kickAnim)
							{
								pm->ps->weaponTime = pm->ps->legsTimer;
								return;
							}
						}
					}
				}
		
		else if ( (pm->cmd.buttons & BUTTON_KICK) )
		{ //kick after doing a saberthrow,whalst saber is still being controlled
			if ( (pm->cmd.forwardmove||pm->cmd.rightmove)//trying to kick in a specific direction
				&& PM_CheckAltKickAttack() )//trying to do a kick
			{//allow them to do the kick now!
				int kickMove = PM_KickMoveForConditions();
				if (kickMove != -1)
				{
					pm->ps->weaponTime = 0;
					PM_SetSaberMove( kickMove );
					return;
				}
			}
		}
		else if ( pm->ps->saberInFlight && pm->ps->saberEntityNum )
		{//saber is already in flight continue moving it with the force.
			PM_SetAnim(SETANIM_TORSO, BOTH_SABERPULL, SETANIM_FLAG_OVERRIDE|SETANIM_FLAG_HOLD, 100);
			pm->ps->torsoTimer = 1;
			return;
		}
		else if ( pm->ps->weaponTime < 1&&
				pm->ps->saberCanThrow &&
				//pm->ps->fd.forcePower >= forcePowerNeeded[pm->ps->fd.forcePowerLevel[FP_SABERTHROW]][FP_SABERTHROW] &&
				!BG_HasYsalamiri(pm->gametype, pm->ps) &&
				BG_CanUseFPNow(pm->gametype, pm->ps, pm->cmd.serverTime, FP_SABERTHROW) &&
				pm->ps->fd.forcePowerLevel[FP_SABERTHROW] > 0 &&
				PM_SaberPowerCheck() )
		{

in bg saber

// Check for WEAPON ATTACK
	// *********************************************************
	if((pm->cmd.buttons & BUTTON_ALT_ATTACK) && !(pm->cmd.buttons & BUTTON_ATTACK) && PM_DoKick())
	{
		return;
	}
	else if(pm->ps->saberInFlight && pm->ps->forceHandExtend != HANDEXTEND_SABERPULL 
		&& pm->ps->fd.saberAnimLevel != SS_DUAL && (pm->cmd.buttons & BUTTON_ATTACK) )
	{//don't have our saber so we can punch instead.
		PM_DoPunch();
		return;
	}
	if ((pm->cmd.buttons & BUTTON_KICK))
	{ //ok, try a kick I guess.
		int kickMove = -1;

		if ( !BG_KickingAnim(pm->ps->torsoAnim) &&
			!BG_KickingAnim(pm->ps->legsAnim) &&
			!BG_InRoll(pm->ps, pm->ps->legsAnim) &&
			pm->ps->saberMove == LS_READY
			&& !(pm->ps->pm_flags&PMF_DUCKED)//not ducked
			&& (pm->cmd.upmove >= 0 ) //not trying to duck
			)//&& pm->ps->groundEntityNum != ENTITYNUM_NONE)
		{//player kicks
			kickMove = PM_KickMoveForConditions();
		}

		if (kickMove != -1)
		{
			if ( pm->ps->groundEntityNum == ENTITYNUM_NONE )
			{//if in air, convert kick to an in-air kick
				float gDist = PM_GroundDistance();
				//let's only allow air kicks if a certain distance from the ground
				//it's silly to be able to do them right as you land.
				//also looks wrong to transition from a non-complete flip anim...
				if ((!BG_FlippingAnim( pm->ps->legsAnim ) || pm->ps->legsTimer <= 0) &&
					gDist > 64.0f && //strict minimum
					gDist > (-pm->ps->velocity[2])-64.0f //make sure we are high to ground relative to downward velocity as well
					)
				{
					switch ( kickMove )
					{
					case LS_KICK_F:
						kickMove = LS_KICK_F_AIR;
						break;
					case LS_KICK_B:
						kickMove = LS_KICK_B_AIR;
						break;
					case LS_KICK_R:
						kickMove = LS_KICK_R_AIR;
						break;
					case LS_KICK_L:
						kickMove = LS_KICK_L_AIR;
						break;
					default: //oh well, can't do any other kick move while in-air
						kickMove = -1;
						break;
					}
				}
				else
				{//leave it as a normal kick unless we're too high up
					if ( gDist > 128.0f || pm->ps->velocity[2] >= 0 )
					{ //off ground, but too close to ground
						kickMove = -1;
					}
				}
			}

			if (kickMove != -1)
			{
				PM_SetSaberMove( kickMove );
				return;
			}
		}
	}

	//this is never a valid regular saber attack button
	pm->cmd.buttons &= ~BUTTON_KICK;


	// make weapon function
	if ( pm->ps->weaponTime > 0 )
	{
		pm->ps->weaponTime -= pml.msec;
	}
	else
	{
		if (pm->cmd.buttons & BUTTON_BLOCK
			&& !PM_SaberInBounce( pm->ps->saberMove )
			&& !PM_SaberInKnockaway( pm->ps->saberMove ) 
			&& !PM_SaberInBrokenParry( pm->ps->saberMove )
			&& !PM_SaberInDamageMove(pm->ps->saberMove))
		{
			if ( !pm->ps->SaberActive())
			{
				pm->ps->SaberActivate();
			}//set up the block position			
			PM_SetBlock();	
		}
		else if (pm->cmd.buttons & BUTTON_KICK)
		{//allow them to do the kick now!
			pm->ps->weaponTime = 0;
			PM_CheckKick();
			return;
		}
		else
		{ 
			pm->ps->weaponstate = WEAPON_READY;
		}
	}

there are a couple of ways to do it .hopefully this will get you started  :winkthumb:

Mand'alor likes this
  • 5 months later...
Posted

I'm testing the map that I will be using but after spawning 3 npc stormtroopers I am getting this error. Error G_Spawn: No free entities

 

Any ways to fix this?

Posted

This simply means you have too many entities in your map. There's a limit of 1024.

 

If this is because you have loads of misc_model_breakable entities, you'll need to change them to misc_model or misc_model_static since those don't count towards the entity count. These would require clipping brushes made for them for collision, since they're not entities on the server-side.

 

You may also be using dynamic lights in your map instead of the normal light entities. Make sure you only use 'light' entities where the lights are just static - the others will take up entity space.

Posted

This simply means you have too many entities in your map. There's a limit of 1024.

 

If this is because you have loads of models, you'll need to change them to misc_model_static since those don't count towards the entity count. These would require clipping brushes made for them for collision, since they're not entities on the server-side.

 

You may also be using dynamic lights in your map instead of the normal light entities. Make sure you only use 'light' entities where the lights are just static - the others will take up entity space.

You're backwards - misc_model gets converted to brushes, misc_model_static is an entity. :P

Posted

You're backwards - misc_model gets converted to brushes, misc_model_static is an entity. :P

 

What I mean was convert misc_model_breakable to misc_model_static. misc_model are indeed converted directly to brushes and so won't count against the entity count. misc_model_static are client-side entities that get loaded at runtime and won't contribute to the server's entity count either.

eezstreet likes this
Posted

Some very small updates but still something because I realized learning code, mapping and making animations are quite a pain and that it needs it's time to reach some viewable results.

 

I've changed the effect of the force lightning as I find the JKA lightning rather awful. Seems to match the movie version (at least I hope so).

 

Then I created some test splash picture for my mod. I guess it is ok but I think I will add other characters to it but I don't wanna reveal too much of the plot. :)

 

Also working on a new HUD for my mod but I used dark_apprentice's TFUII as a placeholder until mine is finished.(Looks pretty good)

 

j65qt6lq.jpg

yeyo JK, axanik, swegmaster and 2 others like this
  • 9 months later...
Posted

I canceled all of my old ideas with Palpatine etc and started something new. I tried to recreate the scanner of the famous bounty hunter Jango Fett (I used the template of Botdra). I am still trying to update it but that's my first try :)

Here is how it looks like.

Posted

I canceled all of my old ideas with Palpatine etc and started something new. I tried to recreate the scanner of the famous bounty hunter Jango Fett (I used the template of Botdra). I am still trying to update it but that's my first try :)

Here is how it looks like.

 

That looks really cool!

Mand'alor and Smoo like this

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...