Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Looking for Programming Help

Recommended Posts

I want to make a mod for doom. I have a rough idea of what I want but I haven't really fleshed it all out yet. Is there anyone experienced enough with modding that would like to collaborate with me?

Here is some of my art:


I know that I will want to add new monsters but I'm not sure how I want them to behave or anything like that yet.

I want to maybe have the majority of attacks for the player be melee weapons, something like Condemned.

It's going to have a scifi horror theme. It will be really dark and take place in some kind of slimy alien environment. I can make some really nice graphics for it and I'm familiar with programming, but I don't have time to do both graphics and programming.

Share this post

Link to post

Well I'm pretty sure that I want to edit the monsters behavior. Maybe not a lot but I will want to. Simple things mostly. Like having a monsters do a "charge" where they gather energy before they fire their weapon. I mean, I don't know if that's what I will be doing, but I want to know if there is anyone experienced enough that would be a part of this that could create something like that if it was what I decided on.

I want to change the game play so that it doesn't just feel like Doom with new graphics.

I'm also open to the ideas of whoever gets involved. I should probably get some concept art together before I really ask for help.

Share this post

Link to post

Your art is very good,now I only know how to do dehacked editing (partly) but I do know most doom modders/wadders are good with decorate,You just have to find the right person.Also alot of people CAN BE JERK'S and will annoy the hell out of you,The only thing I can offer is mapping.I know how to map so if your also looking for mappers I can offer to help.

Share this post

Link to post

The whole decorate/ACS thing comes pretty easily to me, though I am pretty new to mapping and I have very little spriting or texturing ability. Anyways I can help if you need me, though you'll probably find someone better than me.

Share this post

Link to post

Would it be possible to make it so that by firing a weapon the player could make an actor in the game be propelled? It wouldn't cause any damage, it would just cause the monster to be pushed quickly in the opposite direction of the player. Also, could this same weapon be used to do something similar to "rocket jumping", wherein the player could aim at the floor and be pushed into the opposite direction (including z height)?

And also could there be a parachute type effect when the player holds down a button, similar to the floating you can do in games like Super Mario World when you have the cape?

I have an idea for a map in which the player must use an alien weapon from a distance to knock enemies off the edges of floating islands, but also use the same weapon to propel themselves to other island that can be reached no other way. To make up for bad aim they would have a parachute ability to float in the direction of their destination (in some situations).

I imagine this effect could be created using something like the rocket explosion. If you fire a rocket into a wall it does push you back. And also the archviles attack cause the player to jump.

Share this post

Link to post

Not sure if this is a bug (hopefully it isn't), but in ZDoom, the propulsion caused by explosions is based on the amount of damage the explosion is supposed to do before taking damage type factors into account, not the actual damage taken by the monster or player. Meaning, you can make a projectile with damage type of "Repel", and have every actor in the game take 0% damage from that type. When the projectile explodes, whatever it hits will be propelled based on the "damage" in its definition, because that is how ZDoom physics work, but they won't actually take any damage, since they take 0% damage from that damage type.

So, yes to the repulsion projectile.

The parachute is a little more tricky but can be done by making a script which changes the player's gravity coefficient (default:1). Maybe some scripting of velocity or acceleration values would do the trick also. Alternatively, maybe you can somehow make a weapon that shoots invisible projectiles of nothing straight up and has a negative recoil, thus "pulling" you up into the air.

Monsters which charge their weapons are easy to do in Decorate or even Dehacked. All you have to do is insert some charging frame in their attack state before they fire, and add in some kind of sound or graphic that shows they're "charging." In fact DOOM 2 already has a monster like this: the mancubus. Imagine it making a charging sound instead of saying "ambru ah" or something, and there you have it, a charging monster.

Share this post

Link to post

What sourceport do you want to create it for? ZDoom? EDGE? Perhaps you could be a little more specefic as to what you want. A partial conversion? A total conversion? A new game build upon Doom? What's the basic plot/story (in short)? What kinds of weapons and monsters would you like to see?

Share this post

Link to post

Ok, thanks Spleen that's good to know. If I get some decent concept art together to show you that I'm serious about this I hope you will be willing to help. That is if you think you'll be able to implement these techniques.

Ceejay, this will be a total conversion. And I imagine it will use ZDoom, as I am somewhat familiar with scripting and other aspects of it. I haven't had any experience with EDGE.

I haven't fleshed the plot out yet, I'm more focused on game play and atmosphere right now.

Basicly what I'm thinking of right now is somewhat similar to the alien levels from Half-Life. Living and breathing walls. A dark alien like atmosphere. I want it to be very atmospheric and I'll be including lots of ambient noises (humming and such). Really, I want it to be as horrying an experience as possible. Most of it will happen in outdoor type environments because I want to have large scale puzzles based around the propelling weapon.

I want to make a big part of the conversion based around a weapon which which can fire a shockwave through both the front and the back. When fired forward it can hit enemies and throw them off the edge of these floating organic islands. When the rear cannon is fired it can propel the player into the air. They control the angle they are thrown at by simply aiming higher or lower. They control the force with which they are propelled by charging the weapon. The longer they charge the harder the propulsion would be.

Also, I'm considering making it so the player can stick to walls. This will allow for more interesting puzzles in which the player must throw temselves out towards floating walls, stick to them, then from their new vantage point, decide where to throw themselves again.

So it will be heavily puzzle based. The enemies will be as gruesome and creepy as possible. And foggy mysterious looking alien maps. I'll put some artwork up soon.

Also, I think it may have to use GZDOOM since the player will be doing a lot of looking up and down, and I assume it is the OpenGL in GZ that fixes that distortion that happens when you look at the ceiling or floor. Am I right about this?

Share this post

Link to post

peoplethought said...
Also, I think it may have to use GZDOOM since the player will be doing a lot of looking up and down, and I assume it is the OpenGL in GZ that fixes that distortion that happens when you look at the ceiling or floor. Am I right about this?

GZDoom or Skulltag will do it, yes. I would not mind helping with scripting of monsters or would have you but I would like to see some examples of what you are thinking of. Sounds like you have some good ideas though.

Share this post

Link to post

I am proficient at DECORATE and ACS scripting. If you want help, please PM or email me

for some examples of my previous work look here

Share this post

Link to post

I'll be posting some concept art over the next couple of days. I will be doing mapping and will try to help with scripting if I can, but I would prefer to stick with creating art.

I realize you guys don't want to just jump into a project that is destined to fail but I assure you I am serious about creating something new and unique. Not enough people have tried to create something entirely new using all the options we now have and I want this project to be one of the few.

All I can say now is this will be a very strange surreal world. I want to make some really unique and strange looking environments and characters for this.

This is a rough sketch of the player character. I realize that they probably wont even see this in the game.

You can see he has a jet pack like thing strapped to his back. This is used for propelling himself and also for slowing his descent once he has started falling. When this pack is activated, it not only makes his fall much slower, but it also gives him the ability to boost himself in any direction while in the air.

The weapon draws energy from this same pack and can be used to knock enemies off the edges. This will probably be the primary way of dealing with a majority of monsters encountered.

He also has high tech boots that have several features that allow him to stick to walls. I also give him some sort of claw tool on his belt to indicate another way he might scale walls or just cling to them in the alien environment. The player will never see these in use, but it's drawn here for the sake of explaining how the player is able to do this.

The perspective in this diagram is obviously distorted and if the map were made to these specifications the player could simply jump to the exit from his starting point. But for this example we can assume that certain platforms are in locations that are not accessible unless the steps are followed in the order given.

Share this post

Link to post

I'm impressed with your concept art. As I indicated above, I would love to help you out with this. After seeing that art, I can definitely give you a hand. Again, refer to my above work if you doubt my capacity to be useful.

Share this post

Link to post

The very first thing that needs to be created is a weapon that will allow the player to hold a button to charge his equipment, then on the release of that button, send the player flying in a direction dependent on the angle the player is facing. The amount of charge determines the amount of force that the player is pushed with.

Several people have indicated that they may be able to do this, but I can't be sure who really can, so instead of asking just one person to attempt this I ask anyone interested in attempting this to take on the challenge. I suppose the best example I receive first will decide who will be the programmer. I'm not sure how else to organize this.

Share this post

Link to post

Ok, sounds easy, I'll have this ready today evening or tomorrow, since I'm busy for most of the day during Monday-Thursday I can't have it ready immediately. :P

Couple questions:
1) Should the player be propelled in the direction they are facing, or at a 90 degree angle above that? (For example if they are facing forward, should they be propelled forward, or up?) The former would give more control while the latter would make it easier to fly around while firing.
2) Should the charge amount amount be visible as ammunition of the weapon? I was thinking of implementing this by having the weapon have 0 of a special type of ammunition at start, then increasing the ammunition as you hold the fire button, then when you release the fire button the propulsion is based on the ammunition and the ammunition is reset to 0. This would give visible feedback to the player, but could interfere with the ammunition of the other firing mode (the one that pushes monsters off ledges), if you want to do a storable ammunition for that. Or should I make a separate display for the current charge amount?

Share this post

Link to post

Your idea for displaying the charge amount through the ammunition sounds good to me.

The angle of propulsion is based on the angle the player is facing. So if they are facing forward, they get pushed forward. If they are facing a 45 degree to the sky, they go at a 45 degree push. This will be an important technique to master. At what angle and with how much charge should I use to get to the destination?

Share this post

Link to post

OK I pulled something together:


You start with the Thruster as an extra weapon and it shares a slot with the pistol. Tested on the latest public Skulltag revision, should work on ZDoom/GZDoom.

If it seems like it makes you go a little lower than it should, that's because gravity works vertically but not horizontally - the initial thrust is correct, I think. That's probably why most grenade launchers shoot at a slight vertical angle instead of straight out - so you dont have to always look above your target. But you wanted it to thrust straight forward so :P

The sprites and sounds are all from DOOM2, because I suck at making those things, so it looks like a rocket launcher lol. :P The charging speed and amount of thrust can be altered very easily, so please don't criticize the weapon because it thrusts too much or too little.

Finally, earlier I posted this convoluted method of making things get repelled with a_explode and damage type invulnerabilities, when it turns out there is a function to push without damaging called A RadiusThrust, lol. For this weapon I scripted my own function though, to avoid pushing nearby objects - A_RadiusThrust is useful for shooting repelling projectiles.

Share this post

Link to post

This looks good, but it will require quite a bit of tweaking.

Is there any way to change the speed at which the player is thrusted? You can can get pretty far doing it this way, but it happens too quickly. There needs to be a limit on how fast the player can be moving.
It should feel kind of like they are in a low gravity environment, slowed down so they can see what they are doing.

I imagine the speed and the distance are some how related though.

Did you create the weapon for pushing other objects? I can't find it in the wad.

Here is another idea. Since the player may come into situations in which they must attempt a difficult jump, they are given a teleportation device. What they do is drop the item wherever they want. At any time they can press a button and they are transported back to the location of the dropped device. So if they find themselves repeatedly failing a certain jump, this device allows them to skip the process of having to die and reload repeatedly. They can just teleport back to the device before they fall to their death.

Share this post

Link to post

What do you mean by "too fast"? Do you want me to reduce the maximum amount that can be charged, or do you think that the player moves too fast when doing long distance jumps? The distance that the player travels for a given speed is limited by the fact that gravity will accelerate them quickly back to the ground, at the same rate no matter how fast they are moving. I could try putting in some sort of continuous vertical thrust or temporary reduction of gravity to slow down their descent, otherwise they are just going to fall down due to gravity if you don't make them move fast.

And no, I didn't put the repelling gun in. You didn't ask. :P Could you specify the details of how you want it done?

Share this post

Link to post

Ok, I set the gravity to 180.0 and included your wad so I could test it in a low gravity environment and it works perfectly! All that is needed is to lower the maximum charge. We will figure out what this limit should be as we progress.

Can you tell me how I could view your code? I try importing the script but it comes with garbage mixed with it. I'm not familiar with how Decorate works. I plan to give you credit for your programming, but I might want to tweak things on my own sometime.

Now it needs to be so that the player can't fire the thruster when he is in air, he can only do this while he is on ground. Maybe you could do this by checking the z speed? He also needs to be able to move while in air (the parachute effect I talked about earlier).

Share this post

Link to post

There are 2 parts to the code: Decorate and ACS script. Information about both is in the ZDoom wiki. Decorate can simply be edited and saved in a wad editor. Personally I use XWE for my editor.

An ACS script, on the other hand, needs to be recompiled using ACC and the new lump needs to be imported into the wad between the A_START and A_END markers, and the old compiled script needs to be removed. The text version of the ACS script is just for reference and does nothing when you play the wad, so you can ignore it or update it when you change the WAD, whatever you want (I mention this point because this confused me when I first tried to learn ACS). Right now the name of the lump for the compiled script is THRUSTER, that is what you need to replace with a new compiled version of the ACS script if you want to change it.

The z speed is an interesting way of checking z height that I didn't think of, but it's possible to exploit this because there's a chance of there being a tic when you hang in the air, right after you stop rising but before you start falling. I think it's better to just make some formula with floor height and absolute player height, which are both freely available information. Since this isn't *too* much of a change - just needs a couple statements inserted into the decorate definition - and you sound like you want to make some changes yourself, I'll link you to http://zdoom.org/wiki/A_JumpIf. [edit: also maybe A_CheckFloor?]

I actually read your original post before you edited and realized that there is no way to alter an actor's gravity with ACS directly, so I ended up developing a script for temporarily simulating altered gravity for any number of players simultaneously that keeps track of the alteration of gravity for each player. I guess lowering the gravity of the whole thing works too, though. :P But it wasn't a complete waste of time since it isn't too hard to adapt this to work as a script for a parachute. :P

Speaking of the parachute, can you be more specific on how you want it to work? If you want increased control I can also try using the SetAirControl() function, but maybe you also want him to fall at no more than a certain speed (preventing limitless acceleration from gravity like parachutes are supposed to)? If so what speed would that be? And what exactly would trigger the parachute effect? Would it always be on, always giving the player movement control while in the air and always preventing the vertical speed from falling below a certain negative value?

Share this post

Link to post

After playing with your thruster in low gravity, I'm questioning wether or not we need to actualy have this parachute ability. With gravity set at about 180 and using a maximum of 6-8 charge with the thruster, the player can get pretty far, without going too fast, and the descent is pretty slow.

Movement (forward, backward, left, right) while in the air, however, is definitely still necessary. Originally, I thought it would be a good idea to activate the booster, to make the player fall slower, by holding down a button. Now I believe we can just have the parachute (boosters) activate automatically whenever the player thrusts.

It would be nice to have the low gravity specific to the player and only after he has fired the thruster. I would like for his normal jumping to not feel like he's walking on the moon.

Also, could we play a sound when the player is moving but only in the air. A rocket boosting sound would be played since that is how the player is able to do this. And more specifically only play when the player is in his descent?

So with a maximum of 6-8 charge, can we slow the charging rate down by about 1/4 (maybe even slower), and can we have a different sound player for each level of charge? I want to have some sort of beeping sound that raises in pitch and changes in timbre. I have a lot of experience working with audio so I'll be providing some really nice samples.

Here is the big problem right now:

You mentioned earlier that the thrust really only works vertically. I notice this because I go A LOT further if I aim straight up. Is there no way to make the effect stronger for firing forwards? I'm trying to clear this canyon that I made and I have to fire straight up to get across it. If not, it will just be a part of the game, but I think it would be simpler if I could just shoot straight across.

If there is no simpler way to do it, maybe we could multiply the force that the player is thrusted with, based on the angle he is facing. So say he is facing 12 o clock straight up, no change. If he is facing 1 o clock, times 5. If he is facing 3 o clock, times 20. These numbers are probably completely off, but I'm sure we can find a ratio that makes it work right.

Share this post

Link to post

I can do most of this except for the sound, for which I would need the samples.

The player will only be able to have air movement if they launched themselves, correct? Not if something else made them fly up into the air or fall down from a ledge.

The solution to your problem that I was thinking of is making the force at an angle to where they are aiming at, as I had originally suggested. For example, if they aim forward, they could be launched at a 15 degree angle up. If they aim at a 15 degree angle up, they could be launched at a 30 degree angle up. The actual angle at which they are launched would be up to you, though the laws of physics work in such a way that given no air resistance (I don't think there is any in DOOM) and the same amount of thrust, the optimal angle for launching oneself from one platform to another of the same height is 45 degrees. So if you aim 45 degrees up and launch yourself, you will be able to get to a further platform of the same level than if you aim at any other angle. The solution is simply to make the actual angle of launching a little higher than what you are aiming for, making the angle YOU have to aim at, lower. Your solution might work too but it might be a little less intuitive to players, I don't know; plus no matter how much you multiply the force, as long as you have gravity you will end up lower than you started if you launched yourself straight forward. Maybe they could get used to it. Your choice. Maybe you could combine both methods.

Changing the rate and maximum amount of charge is very simple, you can probably do it yourself (it's in DECORATE). The maximum amount of charge is the maximum amount defined in the charge inventory item, where as the rate of charge is one charge per 4 tics (defined in the Hold state of the thruster; change the number 4 in the hold state to something bigger to make it slower).

By the way, I kind of noticed this thread has become a two-way conversation. Nobody else is participating anymore. :( Patrick you are not going to help?

Share this post

Link to post

Well in order for him to help out we need to plan out more of the game. His weapons mod is really impressive so I want to ask him to design some of the weapons for this as well, however I haven't fully planned out what I would like them to be yet. Of course any suggestions are welcome.

We might want to just start talking through PMs soon. Once we get this basic part worked out I will start making sprites and textures and maybe get 1 or 2 more people to help with mapping.

I hear what you are saying with making the actual angle of the projection to be higher then what the player is aiming at. The problem is, the difference even between a 45 degree and straight is still far too big. I don't even go half as far at 45 as I do going straight up. So while this makes it somewhat easier to aim, it doesn't solve the problem of the distance.

In the solution I proposed, the player doesn't have to change how they do anything. If I charge 6 and aim straight up I go say 512 pixels high. If I charge 6 and aim say 5 degrees I'm only moving about 32 pixels. However if I aim that same 5 degrees and charge about 50 I achieve the same distance as I did charging 6 and going up (and don't really gain too much height either).

So we start with a straight up angle (90) and we add nothing. The closer we approach 0 degrees, the more we multiply the force.

Here is a quick formula for what I mean:

ExtraThrust = 90/Angle (facing up = 0, forward at 1 degree = 90)

ExtraThrust = ExtraThrust / 100 (use its value as a percentage)

Thrust += (Thrust * ExtraThrust)

So we give the thrust a 90% gain when facing forward to battle against gravity and 0 when facing up since we have little resistance.

Obviously this is a primitive formula. Division by zero could occur and we would might want to change the percent that is added over the spectrum of 90 degrees, but it explains my idea.

By trial and error we could find just the right multiplier to make the horizontal distance gained nearly equal to the vertical. It doesn't have to be precise.

Also, we need to make sure that when the player is facing straight up, the added 15 degrees (or whatever amount it will be), can't go above 90 degrees.

With the sounds, I can make them, but I just wanted to know if you thought it was possible to do this. Play a separate one for each level of charge gained.


Upon further inspection, I realize that between 45 and 90 degrees the difference isn't as great as I had originally thought. However, we could still attempt to even it out a little if the method I describe above makes sense.

For the boosters (low gravity), the player should be able to turn them on or off, so that when they fall off a cliff, they can use them even if they never activated the thruster. The same low gravity effect has to be on during a thrust though. We assume the boosters are active during the push of a thrust. So we turn gravity to 180 for the duration of a thrust (even though it may already be at 180 if boosters are set to on), then midway through the arc of the thrust, we check to see if boosters are on, if so then don't change the gravity (which will be at 180. If boosters are off, turn gravity back up to 400 even though the player hasn't landed yet.

In this situation the gravity should probably be a ramped gain so that the transition from flying through the air to falling is smooth. So if we detect boosters are turned to off, have a timer increase the gravity gradually until it reaches 400 then stop adding.

Summary: They can turn low gravity on or off, but during the upward movement of a thrust, it will be turned on, then will to return to whatever the players setting is.

This may be unclear to you, if you don't get it I'll try to explain it in a simpler way.

The reason I feel this is needed is that they may encounter areas of a map in which they just want to perform regular jumps without floating everywhere.

Also it would be nice to set one button to thrust straight up, without the player having to aim up. Reason being I predict this will be a move that will become used often. The middle mouse button would work for this.

Share this post

Link to post

I attempted doing all the crap I said above and realized it doesn't work, and just makes things far too complicated. I've been up all night trying to understand Decorate and I have learned quite a bit. Here I have decided to just allow the thruster to be used in air, and I adjusted your formulas. The code is kind of spread out, and I think I may have put things in the ACS that are supposed to be in the Decorate, but it works.


You should be able to reach the first platform with some effort.

Share this post

Link to post

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