How Difficult Would This Zombie Game Be To Re-Make On This Engine?

Release and discuss things you've made, including mods.
Zombie Dude
Posts: 9
Joined: Sat May 15, 2021 2:20 am UTC

How Difficult Would This Zombie Game Be To Re-Make On This Engine?

Post by Zombie Dude »

I have no idea if I'm even really going to make this game or not. But, I really like playing zombie panic source and I also really like using only Free Software (at least as much as I can; I have been working over the years to ween myself off non-free, proprietary software) and it doesn't look like valve will ever liberate the source code to the source engines.

I liked playing the game zombie panic source, but it annoyed me that it's on the source engine and not on a Free as in Freedom engine like Unvanquished is.

How difficult would it be for someone with no programming knowledge to re-create (or as some people would no doubt call it 'rip off' no matter how nicely I word it) the core concepts of zombie panic source into Unvanquished?

The concept, actually, seems exceedingly simple on the face of it. It would really need to function as a stand alone game, and I'll explain why in a moment. But, it would really just be a clone of Unvanquished running the mod. But, the concept for the mod is simple enough that I think it is something that could be done. However, it gets a bit wordy to describe and might be harder than I think to actually program; especially sense I have no idea how to program.

So, zps basically works like this. It's a team of Humans versus a team of Zombies. The game starts off with way more Humans than Zombies. When a Zombie kills a Human, the Human is forced to respawn on the Zombie team for the rest of the match. In this way, the Zombie Infection spreads and the Zombie Hoard grows. It's an interesting game play dynamic because the Humans fight with guns and the Zombies with a melee attack. The game starts off human sided, slowly balances, and then ends Zombie sided. This also perfectly creates the creeping, building horror effect of a spreading Zombie Outbreak. It's also a fun skill test because the people who are best at FPS skills last the longest against the Zombies. Eventually, near then end of the games, there will be one or two humans fighting about twenty or so Zombies (some huge number) in an epic last stand.

From these points, there a few things right off the bat that would need to be done. First, figure out how to force a Human onto the Zombie team upon death. Is there any sort of good and easy way to do forced team switch in the Daemon Engine? People can freely switch between Human and Alien. So, I would think that doing a forced switch upon human death wouldn't be that hard to code.

The second thing would be creating the Zombie itself. There are some Alien units that attack with melee. So, basically re-skin one of them with a Zombie model and adjust height and stuff of hit boxes and add sound effects to match so that it makes sense for a Zombie.

Three game play modes in zps make sense to me to replicate for this type of game. Time, Lives, and Script.

Time: A defensive game play mode where if at least one Human team member is alive when the set amount of time (in minutes) ends the Human Team wins. Otherwise, if the Zombies kill everyone the Zombies win.

Lives: An offensive game play mode where the Zombies share a communal life pool. Every time a Zombie dies a life is subtracted from the life pool. If Zombies Team looses all of their communal lives; Human Team wins. Otherwise, if the Zombies kill everyone the Zombies win.

Script: I don't know how else to explain this accept that a script triggers an event and the Human Teams wins. Otherwise, if the Zombies kill everyone the Zombies win. This was used in things like linear maps where you had to move from the starting point to the ending point to win. Such as getting from a bunker, across a desert, and then holding an area by a helicopter landing pad for a short time to trigger Human Team victory. It was also used for some puzzle maps some people made and for maps that had go from Point A to Point B, interact with an object for a little while. Go from Point B to Point C, interact with an object for a while. Go from Point C to Point D, which is the exit of the map.

The game was very fun to play and those seem to be the five core things that would need to be implemented.

1: Forced Team Change.
2: Zombie Unit.
3: Time Game Mode.
4: Communal Lives Game Mode.
5: Script Game Mode.

Having no clue about coding and looking in from the outside, it looks like that should be pretty easy. Time is just a count down clock and then checking if there is at least one Human Team member left alive. Lives is just counting down a value. And script is just a script call. Forced Team Change looks like it would be taking an already in-engine mechanics and just using it a different way. And a Zombie Unite could use an Alien Unit as its base for game-play mechanics.

The reason it should be a separate game is that Unvanquished already has the ability to switch teams on demand when respawning and from the ESC Key Menu. This would ruin the whole point, fun, and game balance of zps. That functionality would need to be deleted to discourage bad actors from just switching back to Human because they don't want to play as Zombie for the rest of the match. Also, in that line of thought, the matches should only allow people to join an already in progress game in spectator mode only. That way nobody leaves and comes back to switch teams. Also, match start up code would need to decide which players are going to be on the Human Team and which will be on the Zombie team. That, or allow some option for player choice here. But, also keeping in mind that there should only be 1-3 Zombies starting off with (depending on the number of people joining a match at the start.)

Is this a reasonably small scale mod that would be easy to learn how to do for someone that doesn't know how to program? Or, is this all far more difficult that it appears on the outside and I would be biting off way more than I could chew? For some background, before I switched to Free Software I used to toy around and make some game demos with game maker. So, I do understand some about game logic. At least in a drag and drop environment.

For instance, if space key released check if player sprite is P1Right. If so create bullet object offset x, 5 moving in direction right. If player sprite is P1Left create bullet object offset x, -5 moving left. When P1 is created, create variable named Health and set to 100. In step event, if variable Health is less than 1 play deathsound.wav and restart level. If object bullet collides with object P1, delete self and subtract a value of 5 relative from Health.

Stuff like that. So, I do understand the concept of assigning games actions to key presses, object collisions, and very basic variables and values to stuff like lives, health, ammo.

But, I am totally bad at any math that is beyond addition and subtraction. I tried looking into real programming and it looked like I'd have to know math and it scared me badly. I have no idea nor want to know what an array is. I guess if I had to I could learn something like a scripting language. From taking a peek into those they look like game maker logic, just typed out as words instead of drag and drop boxes. Game maker itself actually had a scripting language; gml (game maker language) and basically anything that could be done with a drag and drop box could also just be typed out.

What is everyone's thoughts on this? Does Daemon have an actual scripting language (being based on Quake3) that I could use to maybe try to duck tape something like this together? Or, would I be better off trying to do this in something like GZDOOM? I keep trying to figure this out and I find things like 'C and then into byte code' and I get so scared that I poop a little. That sounds like I would need to learn math.

Would I be better off trying to recreate this in something that's more of a general purpose game engine? Something like Godot? It just seems like with the Daemon Engine and the assets of Unvanquished that the hard parts are already done. That it would make more sense to tweak what's already there into doing what I want it to do than to try to reinvent the entire wheel in Godot or even GZDOOM.

Plus, this opens up the ability to fix some things that I don't like about zps; such as people shoving a couch down a stair case and the Zombies can't get up it for a half an hour. Or, having to hit a door for about five minutes to break it down. I don't want my game to be a twitch shooter; but I would like it to be faster paced than zps. It sometimes does get boring playing Zombie when it takes forever to get into a building.

User avatar
illwieckz
Project Head
Posts: 730
Joined: Sat Aug 11, 2012 7:22 pm UTC
Location: France
Contact:

Re: How Difficult Would This Zombie Game Be To Re-Make On This Engine?

Post by illwieckz »

Today the best way to make a game on Dæmon is to make a fork of Unvanquished game (better not fork the engine) to make a mod, basically, cloning this repository: https://github.com/Unvanquished/Unvanquished

Then you can experiment doing changes, even host your mod and get listed in Unvanquished server browser at first for easy testing with Unvanquished played.

Cloning our repository means this will be your upstream and then you can easily pull the improvements we do, and you would easily submit fixes that may concern both your mod and Unvanquished.

Most of the sounds we want to replace are specific to the humand and alien team we implement (player, weapons, buildables sounds), in some way if you do a game you may want to replace them to get your own identity anyway.

If in the end you distribute a game that visually looks almost exactly like Unvanquished, for example if both maps and human soldiers but zombies are Unvanquished ones, it would be fair to clearly state this is based on Unvanquished. License does not enforce you to do so but well, the more Unvanquished and Dæmon will be known and get contributors, the more you would get help. :smile:

Zombie Dude wrote:

Having no clue about coding and looking in from the outside, it looks like that should be pretty easy.

Is this a reasonably small scale mod that would be easy to learn how to do for someone that doesn't know how to program?

If you currently have no clue about coding, the step will be very high if you start to make a game as first project.

I would recommend you to start implementing minor gameplay changes instead and see if you can see the results in game, then to start hosting your mod on your own server other Unvanquished players may try out. This way you will experiment with many things like:

  • coding game changes (developer's job)

  • building game changes (packager's job)

  • releasing (publisher's job)

  • announcing (communication's job)

  • hosting (hoster's job)

This comment is licensed under cc ​​by 4 and antecedent. The Crunch tool is awesome!

User avatar
illwieckz
Project Head
Posts: 730
Joined: Sat Aug 11, 2012 7:22 pm UTC
Location: France
Contact:

Re: How Difficult Would This Zombie Game Be To Re-Make On This Engine?

Post by illwieckz »

Game maker itself actually had a scripting language; gml (game maker language) and basically anything that could be done with a drag and drop box could also just be typed out.

Dæmon/Unvanquished does not have such mechanism, you would have to acquire some basics of C Language. I started to do C when I was 16 year old or something like that, so I assume anyone can jump into it, but this is very different than a game script language, a script language hides you many things and put many boundaries around what you do. Some of the mistakes you can do in C may crash the game, not just get unexpected results in game. :grin:

This comment is licensed under cc ​​by 4 and antecedent. The Crunch tool is awesome!

User avatar
Gireen
Graphic Designer
Posts: 295
Joined: Wed Mar 07, 2012 1:26 pm UTC
Clan: [DoH]
Location: Germany
Contact:

Re: How Difficult Would This Zombie Game Be To Re-Make On This Engine?

Post by Gireen »

It might be doable as a Unvanquished Mod if you have basic coding skills or learn them. Then you can read the simple code changes that happen to Unv to understand better how the game works. With that knowledge its quiet easy to make a zombie mod. Still much work but doable in small steps.
There are also others with interest in a Unv zombie mod so your chances for cooperation are also not bad :grin:

For example we had until recent a mod where humans would fight against humans.
Teams can already be locked.
Forced teamchanges are easy to code. Maybe something for your first experience. If a player of human team dies he is switched to aliens.

Creating and maintaining a standalone game/fork from daemon is considerable more work then "just" a mod. Building a multiplayer game from scratch with godot is for your skill level probably unrealistic ( still doable if you want to learn really really much. math is there one of the least fearful things :bugeyes: )

fear ma engrish :granger:

Zombie Dude
Posts: 9
Joined: Sat May 15, 2021 2:20 am UTC

Re: How Difficult Would This Zombie Game Be To Re-Make On This Engine?

Post by Zombie Dude »

illwieckz wrote:

Today the best way to make a game on Dæmon is to make a fork of Unvanquished game (better not fork the engine) to make a mod, basically, cloning this repository: https://github.com/Unvanquished/Unvanquished

Then you can experiment doing changes, even host your mod and get listed in Unvanquished server browser at first for easy testing with Unvanquished played.

I thought about doing it that way for the early days of testing. But, I don't think it would work for the type of game that I want to create.

Unvanquished is very generous to the players in treating teams very loosely. What I mean by that is if you get bored or frustrated with one team; there is a built in menu system in at least a couple locations that allow you to back out and switch teams. In my game I want all of that completely deleted. Can I make a mod delete or block this functionality? Or is that something that has to be done through editing the game engine itself?

I'll explain what I mean and why it would totally destroy what I'm going for here. I want the engine to function in such a way for my game as to marry the player to their teams throughout the entire match and totally block (as much as technologically possible) bad actors from ruining the game design / game balance / fun.

The very nature of the core Zombie component is that it basically hijacks that entire team concept and guides the player the entire match. It has to for the game play idea to function correctly.

So, when a Zombie kills a Human the game is to simulate the idea of an Infectious Zombie Outbreak in that the Human player that died now becomes a Zombie for the rest of the match. It's the core idea that I loved about zps that I want to re-implement here. It achieved this on a technical level by shifting a Human player from the Human Team to the Zombie Team upon the death of the Human Player. This grows the Zombie Hoard. It is required for how the game balance works. It's a game of shifting game balance. It starts out in favor of the Humans. The one or two Zombies working very hard to try to kill even one Human. It is a real struggle. As more Humans are forced to the Zombie side, the game eventually reaches an equilibrium. This equilibrium is eventually shattered as even more Humans are turned to the Zombie side and the game ends up at the end in the favor of the Zombies. At this point the Humans either need to finish their object to win, or make a heroic last stand in the face of impending defeat as one or two Humans are left against like twenty or so Zombies all hunting them down.

The problem is, as is often the case with online games, bad actors being unsportsmanlike. In a large room, you almost always have that one bad apple who throws a hissy fit because they don't want to play on the Zombie Team upon death as a Human. Yet, the entire game balance depends on this. If the Zombie Team can't collect more players by actually turning Humans; the game balance never makes the shift to the Zombie side and the Zombie players are screwed. It's unfair to them.

The bad actor is likely to try anything the game allows to circumvent this. Obviously, I can't stop the person throwing the hissy fit from just shutting the game off and disconnecting. But, aside from that, I want to try to properly lock them in the Zombie Team as much as possible.

In Unvanquished they can just hit the ESC Key, select join Human, and poof; they're back on the Human Team. This option works both ways as they also select join Alien. This is also unfair as if the Human Players just join Zombie Team right at the start of the game it would create too many Zombie Players and destroy the game balance of the early game for the Human Team.

Those two menu options would need to go. There is nothing wrong with them in Unvanquished. But, they would destroy my game.

Same thing is true for respawning. Once you're on the Zombie Team, you're supposed to be stuck on a Zombie respawn loop. Die as a Zombie, respawn as a Zombie. You never play Human again for the rest of the match. Everything resets at the start of each match.

Well, again, here is another problem. Unvanquished has a pop up menu for respawning (the same one that players see when they join a game and start a game) that allows them full access to join whatever team they want; including backing out of the team they're on and switching teams upon every respawn. Again, this is fine for Unvanquished; but would completely destroy my game. That functionality in the menu would need to be completely deleted for my game. Again, I don't know if this can be done in a mod without changing the game engine itself.

Honestly, if it needs to be changed in the game engine, I will probably just try to find the functionality in the ESC Menu Code and the in respawn menu and just plain delete those entries out entirely.

Are there also console commands that can switch teams? If so, they would also need to either be locked by the mod or deleted out of the engine for my game.

And, here is another point. Joining an in progress game in Unvanquished allows players to select their team with the same menu that appears for first joins and for respawning. This is also something I would have to destroy for my game.

Bad actors will try anything to circumvent the rules. I have no idea how to implement anything like IP Tracking to force a player who leaves the game as Zombie to be forced back onto the Zombie Team if they rejoin the game. Plus, anything like that can easily be circumvented with a proxy sever / VPN; anything that can change the IP Address of the Player.

Because of this, players who don't want to play on the Zombie Team can just exit the server, rejoin the server, and pick Human Team. Again, this is bad and destroys the entire point and game balance.

So, the only effective way that I know of for how to block this exiting of the server and rejoining the server to get the team you want is to block or delete this menu. Also, to really secure it the best way on top of blocking or deleting that menu, is to force all joins to a match in progress to be forced into spectator mode. They will have to wait until the next match to actually be able to play. It's just the simplest way to fix this problem.

If I just build the mod (assuming a mod can't do any of this; again I could be wrong) even the mod testing will be very poor because it will depend entirely on the good will of the players to not be bad actors. But, this type of game can't depend on that for public faced testing. (That would only work for testing with friends and family. People I can tell not to rejoin or switch teams because they will respect that it breaks the game concept and game balance.) Public facing testing would be a poo show because no one is going to respect that this is how the game is supposed to be played and will just swap teams on the fly.

More than anything, this mod / game play design is largely about controlling the flow of teams and game play modes. It has very little (basically nothing) to do with in-game, game-play changes itself. The only thing it really changes on the in-game game play side is creating a Zombie Unit that Zombie Team will play as. Then deleting everything Alien related (structures and units) and replacing them with that one Zombie Unit. The Human Team remains completely untouched. (At least in early testing. Ideally, I would like to re-skin the Human Team to look Horror themed instead of Sci-Fi themed. Just as I'd like to re-skin some maps [mostly the sky boxes into being city scapes instead of stars to make them look like horror instead of Sci-Fi])

So, the flow of the game play would look something like this in an early test build.

Step 1: Sever Starts and waits for minimum amount of players to join. (Would need to pick a small number like 5 because the game is new. Ideally a larger number if the game became popular. Like 20 or 30 or something How many players can the Daemon Engine handle? The more the better for this type of game; assuming lag doesn't get out of control. The more Humans eventually means a larger Zombie Hoard by the end of the match. Also, stop one is where I would eventually like to create lobby options for letting players try to enter a Team Preference. This is explained more in Step 2's details. However, at first it would be easier to code waiting for minimum players and then just randomly assigning everyone teams. Ideally, even if there are enough players or more then enough players to start a match; the sever would wait like a minute to let people enter their Team Preferences before assigned players in the more dynamic way that Step 2's details would allow.)

Step 2: When minimum amount of players have joined, randomly assign one player to Zombie Team and everyone else to Human Team. (Again, ideally if the game becomes more popular and gets larger server populations I could change this to a shifting value. So, like, 1 Zombie for 5 players; 2 Zombies for 10 players, etc. Also, the random assigning is something that will need to be there at the start because it would be more simple to code, I think. What I would like, long term, is to allow people a chance to try to pick their team; then randomly select to fill out the rest. That's what zps does. So, like, you can say that you'd like to play Zombie or Human. Then the game will fill those slots if it can. Then, if not enough slots of filled, the game would randomly assign the rest. So, lets say it's a big group of players and we need 3 Zombies. Then let's say 2 people volunteer to play Zombie right away. Those two players would get Zombie. Yet, the game will still need 1 more Zombie. The game would then check the pool of people who did not pick a Team Preference and randomly pick one of them to play as the third Zombie. If everyone else chose to play Human and there is no people who didn't pick a preference, the game would then need to look at the pool of people who chance that they wanted to play as Human and randomly force one of them to play as Zombie to fill out the 3 Zombie quota. Same idea applies in the reverse if there are too many people wanting to play as Zombie. If the game only needs 3 Zombies, and 5 people want to play as Zombies; the game will randomly choose 3 Zombies from the 5 people wanting to play as Zombie and boot the rest, in this case the other 2 players wanting to play as Zombies, over to playing as Humans. This is again why I can't have people changing teams as they want once the match starts. The game balance needs to be maintained for the game concept to play out correctly and players need to live with what the game assigned them to for the rest of the match, even if it's not what they wanted. It sounds harsh, but that's how balance is achieved for this style of game. If everyone just got to play Zombie or Human at the numbers they wanted to, it would throw everything off and the game concept and balance would just collapse. Players need to know this and respect it as part of the concept this game is going for.)

Step 3: Once all players on the server are assigned their teams, start the match. At the same time when the match is started, lock the server into forcing all new joins into spectator mode only for the duration of the match. (This prevents leaves and rejoin to try to change teams. The new joins can watch the match and will be allowed to play when the server restarts this entire process for the next match. That is when they will be assigned a team; in step 2 of starting the next match.)

Step 4: Whenever a Human Team player dies, migrate that player to the Zombie Team.

Step 5: Match continues on until end of match event is triggered.

For Time Mode, the two end of match events are time running out or Human Team being populated by 0 Players.
[If Time Counter Value = 0, then display message to everyone that 'Human Team Wins' and restart the server actions back to Step 1.]
[If Human Team Population = 0, then display message to everyone that 'Zombie Team Wins' and restart the server actions back to Step 1.]

For Communal Zombie Lives Mode, the two end of match events are Zombie Team's Communal Zombie Lives running out or Human Team being populated by 0 Players.
[If Communal Zombie Lives Value = 0, then display message to everyone that 'Human Team Wins' and restart the server actions back to Step 1.]
[If Human Team Population = 0, then display message to everyone that 'Zombie Team Wins' and restart the server actions back to Step 1.]

For Script Mode, the two end of match events are script being activated or Human Team being populated by 0 Players.
[If Human Team triggers script, then display message to everyone that 'Human Team Wins' and restart the server actions back to Step 1.]
[If Human Team Population = 0, then display message to everyone that 'Zombie Team Wins' and restart the server actions back to Step 1.]

I don't know if Script Mode is possible now that you say there really isn't a scripting language. So, maybe that mode will just have to be scrapped entirely.

Step 6: When end of match event is triggered, display the winning team to all players for a short amount of time (long enough for them to read it) and then restart the process back to Step 1.

This is the 6 Step Server Loop that the game will function on. As you can see, basically the entire mod is about establishing and enforcing this 6 Step Server Loop to create the Zombie Infection style of Game Play for this game.

The only other thing about the Mod is to wipe out the Alien Team and instead replace them with the one type of Playable Zombie Unit for the Zombie Team. (I don't know if this is handled better by going into each map and individually deleting the spawns for Alien Structures and creating invisible, not solid, industructable Zombie Unit Spawn Points. That seems the easiest thing to do. So, the only two in-game 'things' that I would need to create are the Zombie Unit [It will move like a Human but has an 'arm swipe melee scratch attack' like some Aliens. I will likely look at the basic human and mod the model to look Zombie-Like and then study how the melee attack and hit box works for the Aliens that have them and re-implement that for the human model shape for my Zombie's attack.] and then an invisible, not solid, indestructible Zombie Spawn Point that I can then place several around the map.

This is why I don't think that (or don't know if) this can really be achieved (or even tested properly) with just a mod and not editing some parts of the engine itself. Because almost the entire mod is really about establishing and enforcing the 6 Step Server Loop and then plugging up 'holes' in the game engine's functionality and menu system that would allow bad actor players to disrupt the flow of the 6 Step Sever Loop by changing teams whenever they want.

It's really a mod about creating a very specific type of Team Death Match multiplayer that has a shifting game play balance where all the players are locking into specific teams and when the Human Team players die they are forced to shift to and stay locked into the Zombie Team. This creates the Zombie Infection shifting balance mechanic that makes this a Zombie Infection Game. If that shifting game balance is muddled by team switches then the entire point is lost and the game just devolves into regular Team Death Match but one team is running around as a melee Zombie. It looses its core appeal and becomes kind of boring.

The entire fun of the game from the Human Team side is to see how good you are at FPS games to see how long you can last against the Zombie Hoard. Long enough to run the timer down or kill a set amount of Zombies? If you're not that good, you try to survive as long and you can and your 'punishment' is to become a Zombie when you loose.

The entire fun of the game from the Zombie Team side is to grow your numbers in your Zombie Hoard by killing and turning Human Team players to your Zombie Team and then eventually overwhelming the Human Team by hunting them down and killing them all before the time runs out or they kill a set amount of Zombies.

It actually plays really well in zps. It's fun to have a dynamically shifting balance to Team Death Match. It creates this Zombie Survival scenario, a form of Survival Horror.

I think I can actually improve on some areas of zps here in my game by cutting some of the fat of zps. Zps plays too slow. I don't want this to be a 'twitch shooter,' so it should player slower than Unvanquished does. But, zps takes slowness to a whole new level; in a bad way. Because in zps they implement two things from the source engine that ruin the game play flow. I don't think the Daemon Engine has these two things, but if it does I don't want to implement them. This will make my game play much faster paced than zps and I think that will create a balanced and more fun game.

Here are the two things zps does wrong that I want to improve on here in my game.

1: Zps implements the source engine's physics engine with indestructible, player movable, furniture items. This seems more in line with a Zombie Movie. So, I get what they are going for. But, in actual practice, it's a horrible nightmare. Players will shove a couch down a stair case and lodge it into place. Or, they will shove a table into a tunnel and lodge it into place. This creates a barricade. Which, again, in Zombie Survival seems like a realistic idea. The problem is that it completely destroys game play flow. The barricades are way too difficult for Zombies to get around / over / under while Humans stand back and casually shoot the Zombies easily. It takes no great FPS skill to lodge a couch into a stair case or a table into a tunnel. This makes the game play slow and boring for the Zombies who can never get through the barricade jungle gym fast enough to actually hit the Humans. This also makes the game play slow and boring for the Humans who get free Zombie kills with no effort. Making it so that furniture objects can't be pushed around by players solves this problem.

2: Zps allows for destructible objects to be placed by map makers and Human players. Again, I see where this seems more in line with a Zombie Movie. I get what they are going for. But, the problem is that these wood planks that the Human players or map makers can put up (as well as closable and lockable destructible doors) take way too long to break. I've seen locked metal doors and boarded up windows take (what feels like) several minutes to bust through. (I literally do think it takes several minutes. I guess I never counted it specifically.) This slows the game play down to almost a halt. It takes no great FPS skill to lock doors, stand on a roof, and shoot at Zombies that can’t get up to you from above. It’s boring for the Zombies who can’t reach the Humans. It’s boring for the Humans who are just getting free kills. Not allowing for these breakable barricades to be made by map makers or players in the first place solves this problem.

The very nature of fixing these two problem (by simply not re-implementing these features) will make my game play very differently, and in my view much better, than zps. Any bottleneck to the game play that stifles interaction between Zombies and Humans like these types of barricades stifle interaction only serves to drag matches out forever unnecessarily in unskilled, uncreative ways that just make the matches boring for everyone. I seek to find a find line between a twitch shooter on one extreme and the molasses pace of zps on the other extreme.

I want a game that has a ‘medium’ pace where matches for a medium population of players usually last 10-20 minutes. Zps matches could go on for a half hour to an hour with no real progress being made by the Zombies. That’s not an FPS game. That’s a shooting gallery.

Human Defenses should revolve around static objects, corridors and corners, elevators, and torrents. Humans should never feel safe. The game should never feel like a shooting gallery.

Zombies walking and crouch walking should be silent to allow them to sneak up on Humans. Zombies should only make sound while running.

I would actually like also like to eventually modify torrents to make them less effective. I could see torrents mowing down Zombies way too easily if they were well placed and numerous.

So, one idea I have is that Zombies can simply crouch walk past them. This would effectively make torrents only useful in active combat situations; as opposed to being a set it and forget it permanent Zombie blockade.

If that doesn’t work for balance, maybe do other adjustments. Like Torrents are so weak that they take like one or two claw swipes to be destroys. So, if a Zombie manages to get up to them they’ve basically already destroyed them. That, or make the bullets from the torrents do almost no damage.

The torrents should give support to Humans holding a position; they shouldn’t just mow down Zombies easily in seconds.

Back to my original point, almost the entire game concept is about creating and enforcing the 6 Step Sever Loop. I don’t know if a mod alone can really modify the game and menus to this degree to change the game play this specifically as well as to plug up all the ‘holes’ that the current game would allow people to violate the 6 Step Server Loop by changing teams at will.

As far as contributing back to Daemon and Unvanquished, I am not sure what changes that I would make that would be able to be contributed back. All I’d really be doing is adding in a Zombie Unit, swapping assets from a Sci-Fi Theme to a Horror Theme, and then deleting functional content from the engine to create and enforce the 6 Step Server Loop. There’s really nothing of note here that would be useful to Daemon and Unvanquished. If you all wanted to copy anything I do back, feel free; as I want my game to be Free as in Freedom as well. I just don’t see how gutting the Daemon Engine of the functionality to switch teams is really going to help the Unvanquished game; or any other game project based on the Daemon Engine that isn’t trying to do something like I’m wanting to do.

I have no problem giving credit to Daemon Engine and Unvanquished. That's not an issue.

I guess the next question to ask is what files would I need to look at or mod to try to create and enforce the 6 Step Server Loop? That’s where the bulk of code would need to be changed.

Zombie Dude
Posts: 9
Joined: Sat May 15, 2021 2:20 am UTC

Re: How Difficult Would This Zombie Game Be To Re-Make On This Engine?

Post by Zombie Dude »

Gireen wrote:

It might be doable as a Unvanquished Mod if you have basic coding skills or learn them. Then you can read the simple code changes that happen to Unv to understand better how the game works. With that knowledge its quiet easy to make a zombie mod. Still much work but doable in small steps.

That's what I'm hoping for. My hope is that doing the basics shouldn't take more than three or so months of learning the knowledge I need and working on it in my spare time. My game design goals here are not very grand and it's really just to get the basic functionality working.

Gireen wrote:

There are also others with interest in a Unv zombie mod so your chances for cooperation are also not bad :grin:

That is also what I'm counting on. I really don't want to expand the game any further than the basics myself. My goal here is not necessarily to become a programmer or someone who does 3D modelling. If I enjoy the process and want to keep doing these things, great. If I enjoy the process and want to keep expanding the game, great. But, my real goal here is to just get the basics working and hope that more talented people than myself will like the concept enough to carry on development from here. I really just want this game (a zps-like game on a Free as in Freedom Engine) to exist. And sense it doesn't already exist and I don't think that I can beg or annoy anyone else into developing it for me; I feel like if I want it to exist I'll have to at least make the bare bones of it to show people what the game could be and give people something to build on. (Even if that means largely re-doing most if not everything that I do.)

Gireen wrote:

For example we had until recent a mod where humans would fight against humans.
Teams can already be locked.
Forced teamchanges are easy to code. Maybe something for your first experience. If a player of human team dies he is switched to aliens.

I was unaware that teams can already be locked. Is this done in mods or is this an engine options in hosting the server? I was also hoping that forced team changes would be easy to code. That's like half the work for my mod already done. Where do I find these mods? Are these mods GPL licensed?

Gireen wrote:

Creating and maintaining a standalone game/fork from daemon is considerable more work then "just" a mod. Building a multiplayer game from scratch with godot is for your skill level probably unrealistic ( still doable if you want to learn really really much. math is there one of the least fearful things :bugeyes: )

I kind of figured Godot would be a lot of learning to do something like this. Unvanquished already seems so close to what I would like to have for my game; it really just needs some basics mods to it and it would work out of the box.

Road Map To Version 1: The Mod

I am going to list here specific steps of everything that needs to be created to have a playable version that can get off the ground and actually function. You have been very helpful so far. Please let me know if any of these steps cannot be done in a mod. If they can all be done in a mod, then perhaps I can just do first testing on Unvanquished Servers themselves without needing to mod the Daemon Engine itself. All these steps are explained in much greater detail in my previous post.

Objective 1: Implement 6 Step Server Loop

This is the core Server Loop that needs to be in place to create and enforce The Zombie Infection shifting balance Team Death match game idea that I want to implement.

Step 1: Sever Starts and waits for minimum amount of players to join. (Not sure what to set the minimum number of players at for a new game.)

Step 2: When minimum amount of players have joined, randomly assign correct amounts of players Zombie Team and Human Team. (The game should start with very few Zombies and everyone else on Human Team.)

Step 3: Once all players on the server are assigned their teams, start the match. At the same time when the match is started, lock the server into forcing all new joins into spectator mode only for the duration of the match. (This prevents leaves and rejoin to try to change teams. The new joins can watch the match and will be allowed to play when the server restarts this entire process for the next match. That is when they will be assigned a team; in step 2 of starting the next match.)

Step 4: Whenever a Human Team player dies, migrate that player to the Zombie Team.

Step 5: Match continues on until end of match event is triggered.

Step 6: When end of match event is triggered, display the winning team to all players for a short amount of time (long enough for them to read it) and then restart the process back to Step 1.

Objective 2: Implement Simple Game Modes

These are the game modes that make sense for this type of game and were what I played in zps that I want to re-implement here.

1: Time Mode

The two end of match events are time running out or Human Team being populated by 0 Players.
[If Time Counter Value = 0, then display message to everyone that 'Human Team Wins' and restart the server actions back to Step 1.]
[If Human Team Population = 0, then display message to everyone that 'Zombie Team Wins' and restart the server actions back to Step 1.]

2: Communal Zombie Lives Mode

The two end of match events are Zombie Team's Communal Zombie Lives running out or Human Team being populated by 0 Players.
[If Communal Zombie Lives Value = 0, then display message to everyone that 'Human Team Wins' and restart the server actions back to Step 1.]
[If Human Team Population = 0, then display message to everyone that 'Zombie Team Wins' and restart the server actions back to Step 1.]

3: Script Mode

The two end of match events are script being activated or Human Team being populated by 0 Players.
[If Human Team triggers script, then display message to everyone that 'Human Team Wins' and restart the server actions back to Step 1.]
[If Human Team Population = 0, then display message to everyone that 'Zombie Team Wins' and restart the server actions back to Step 1.]

I don't know if Script Mode is possible now that read that there really isn't a scripting language. So, maybe that mode will just have to be scrapped entirely.

Objective 3: Plug Up All Team Changing Exploits

This is simply to find all ways that players can change their team at all and block or delete them for being able to be used.

1: Delete choosing teams from the first pop up menu that appears when joining the game.

2: Delete choosing teams from the first pop up menu that appears when the match starts. (I think it's the same menu as Point 1.)

3: Delete changing teams from the pop up menu that appears when respawning. (I think it's the same menu as Points 1 and 2.)

4: Delete changing teams with the ESC Menu Key Options.

5: Force everyone who joins a game with a match in progress to be forced into spectator mode until the next match to avoid team changing by simply leaving the server and rejoining the server. (Part of Objective 1: Step 3.)

6: Delete all other known ways of changing teams at will. Such as maybe console commands or anything else I'm missing.

If there is a simple way of locking teams with the Daemon Engine or a Mod that could fix all of this. I will need to see if it fixes Point 5 or not. But, even still, it would fix everything but Point 5.

Objective 4: Create Zombie Unite for Zombie Team

1: Create Zombie Unit for Zombie Team. It would probably make the most sense to just base the model off of the Human Player already in Unvanquished as it already has a Human shape, texture, and animation already complete. It would need the texture and maybe geometry modified a little to make it look Zombie and Horror instead of Sci-Fi. (Eventually the Human itself will have assets remodeld to look Horror and not Sci-Fi also. I want to go for a Horror look, not a Sci-Fi look, not a Horror and Sci-Fi combination look. This is a Zombie game, not a Zombies in Space game. This is why I'd also like to try to re-texture the map sky boxes to look like they are in cities or deserts to make it not Sci-Fi eventually.) I will need to make the Zombies Unit have a melee attack that in animated and functions. I think studying the melee claw swipe of the Aliens and adapting it to the Zombie Unit would make the most sense here. So, the Zombie Unite will move like a Human, but for its one and only attack claw swipe like an Alien. So, it's like a tall, thin Alien that can't wall walk; basically. (I also want to hawk down the movement speed of both the Zombies and the Humans quite significantly. I want a medium paced game, not a twitch shooter. Zombies should move slower than Humans.)

2: Create an invisible, un-build-able, unbreakable, Zombie spawn item for adding Zombie spawns to maps. (Zombies only have the one single Zombie Unit and do not build structures or have any RTS elements. That's just for Humans. Zombies grow in power by growing in numbers. Sense Zombies do not build or have structures at all, there needs to be a way to place their spawn points into the maps.)

Road Map to Version 2: The Stand Alone Game

Version 2 is to be made when Version 1 is done. It will have more polish.

Objective 1: Human Team Asset Replacement

Replace all Sci-Fi Elements on Human Team with Horror themed assets. So, regular chainsaw instead of laser chainsaw. A metal locker to buy items from instead of Computer. Armor that looks like it belongs in a Zombie Apocalypse instead of from Sci-Fi. Delete any item or Weapon that can't have it's theme changed from Sci-Fi to Horror in a way that makes sense for Horror. For instance, a laser just doesn't make sense in regular Horror. I don't know how to adapt that so it will likely just need to be deleted.

Objective 2: Map Asset Replcement

Take the space out of the sky boxes and add Horror themed things. So, city sky lines, deserts; anything that can make the space ships look like military bases in deserts or buildings in cities. I don't plan for this to be extensive. Just some quick and easy texture swap outs. Obviously take off anything that looks too Sci-Fi like ship thrusters or anything like that. But, otherwise, make it so that we can all squint and pretend it's Horror instead of Sci-Fi.

Here again I hope the game catches on and people make maps that are better fitted to Horror and Zombies rather than Sci-Fi for the game.

Objective 3: Main Menu Asset Swaps

Change out the main menu graphic to have the game's name and Zombies fighting Humans. Add new music to be Horror and Zombie themed. Change out the in-game help. Basically, "re-brand" the game. If I can do this without changing the Game Engine itself, but I could still pack the game with the mod for distribution; that would be great.

Objective 4: Game's Own Servers

Just as the game should have its own Menu Screen, it should also have its own servers. I am fine with giving credit to Unvanquished and Daemon Engine (in the text files of the release and I would like to do it on the main menu as well.) But, I do want this game to have its own identity separate from Unvanquished and I don't think that really works if people are seeing and hopping onto servers between games. I want people to see this as a stand alone game (even if I don't need to actually edit the Daemon Engine to make it) and not 'just' as a mod. I want people to build it up as a stand alone game, not 'just' as a mod. Otherwise it doesn't really get people thinking of it and developing it as anything more than 'just' a mod. I want it to exist as a Free as in Freedom alternative to zps. I don't want people to 'just' think of it as a 'cool mod' to Unvanquished. I want people to think of it as its own separate game. Otherwise, I'm afraid Unvanquished will overshadow it and it will never have its own identity.

Zps itself started out as a mod to half-life 2. When it got developed enough and popular enough, it branched out and became its own stand alone game.

I want the same thing to happen here with my game. It's fine to start it out as an Unvanquished mod. But, for it to truly exist as a Free as in Freedom alternative to zps and to compete with zps for players and popularity; it really does need to eventually become its own stand alone game.

At its core, I want this game to exist and be able to point people to it and say, "Hey, do you like zombie panic source? Well, here is an entirely Free as in Freedom game that is kind of like it but also different. Please play it and I hope you like it."

I don't just want to build the same thing. I want to keep what I liked from zps and change what I don't like. Plus, the Human Team RTS Elements will make this game have a very different type of game play from zps on that fact alone; plus the other changes I want to put into place. By not putting in movable furniture, barricades, or lockable doors like zps; my game will also be faster paced than zps. So, I want a game that is slower than Unvanquished but also faster than zps.

Zps prides itself on matching the traditional 'slow moving Zombies' style of Zombie movies. I don't want to mimic that from them. I don't like that about their game and they can have that game play style. I want my game to be much more combat oriented rather than 'barricade yourself in and survive by shooting from the roof tops or from atop of stairs or from behind a movable table that you shoved into underground tunnel.' So, that is another way that my game will be different and faster paced. Not a 'twitch shooter' but also not a hide and fight from a distance game. It's a little hard to explain. But, my game will have a markedly different feeling than zps. More of a traditional Team Death Match, but with Human Team RTS elements inherited from Unvanquished, married with the team switching and game modes from zps whilst also speeding up game play by dropping the barricade and movable furniture situation from zps that slowed down game play and made for un-fun and un-skilled situations. Zps focused too much on Zombie movie accuracy that it hurt the game play. I want to scale back to making a more traditional Team Death Match game that is still Zombie in its nature. But, in my game, I want game play fun and game play balance to take a higher position than Zombie movie accuracy. This will separate my game's game play from zps.

User avatar
killing time
Programmer
Posts: 165
Joined: Wed Jul 04, 2012 7:55 am UTC

Re: How Difficult Would This Zombie Game Be To Re-Make On This Engine?

Post by killing time »

A mod is a wholesale replacement of the gamelogic modules which implement all of the gameplay, UI, in-game admin commands, staging graphical effects, etc. This means there is no barrier to doing any of the things.

The team management would actually be one of the simplest things to implement. There is already a lock command which prevents additional players from joining a team, and a putteam command which moves a player to a different team. So you could reuse the functions for those.

Zombie Dude
Posts: 9
Joined: Sat May 15, 2021 2:20 am UTC

Re: How Difficult Would This Zombie Game Be To Re-Make On This Engine?

Post by Zombie Dude »

killing time wrote:

A mod is a wholesale replacement of the gamelogic modules which implement all of the gameplay, UI, in-game admin commands, staging graphical effects, etc. This means there is no barrier to doing any of the things.

The team management would actually be one of the simplest things to implement. There is already a lock command which prevents additional players from joining a team, and a putteam command which moves a player to a different team. So you could reuse the functions for those.

That's all great news! Thank you very much!

Does anyone know of a good video tutorial series on Youtube for making Quake 3 Mods? I learn new things on computers best from watching videos tutorials. I had started learning a little GZDOOM scripting from Chubzdoomer's Youtube series.

I tried searching for how to mod and how to make does for id tech 3 and quake 3 and all I get is videos showing me how to add mods or what some different mods look like.

Has anyone made a good series on how to do this? I tried looking elsewhere but in text I keep getting long explanations on how each element of the engine works and giant flow charts of the same information. A detailed diagram and anatomy of the engine doesn't really help me when I don't know how to code 'Hello World.' They presume, on the face of it, that I have some understanding of what I'm doing. I do not.

I work best with very hand-holding videos that assume I'm stupid and slowly fill my brain with knowledge because then I can pause, re-play, zoom in and look at what's going on step, by, step and actually come to grips with what's going on. Or, at least try to.

I recently discovered a series like this for Blender and I learned enough to make a Smiley, an almost pumpkin, and something that nearly resembles a cat. Though, I did learn how to add in a 3D mesh, sculpt it in sculpt mode, and throw a texture on it. I am still very confused about UV Wrapping and so my textures end up all over the place. But, baby steps. At least my pumpkin has gone from looking like a orange lamp shade to looking like an actual pumpkin shape.

I have tried to learn programming many times and I keep running into walls. Largely stemming from diving into math, or from taking three chapters to teach me how to do absolutely nothing useful. (Probably is useful, but not for anything that I want to make.) [Here is how to make a terminal guessing game where you set a temperature and then ask the computer if the number you enter is greater or less than the value of the temperature.] Great... how do I turn this into a modern 3D computer game?

What I did enjoy about drag in drop programming in game maker was that the things that I learned became immediately useful in projects that I was working on. An instant application of newly acquired knowledge that I could see manifest in the game I was working on. Instead, everything that has tried to teach me programming tries to teach me from abstract lessons on creating small little programs that are supposed to be teaching me the small steps to doing larger things but loose my interest entirely because I have absolutely no context for how to go onto making anything useful with it.

I like building blocks that make sense to me in how I can put them together to make bigger things. This is why I think that a scripting language would make more sense to me. Because the blocks are somewhat more tuned to what a game engine would actually do. As opposed to a straight up programming language that is used for making game engines (and many other things.) If that makes any sense.

I want elements like object created, object destroyed, step, if X key is pressed or released, etc. As well as, create variable, change sprite, modify variable, do this if such and such is the case with the variable.

For instance. If space key is released check to see if ammo counter variable is above 1. If so, create object bullet and -1 relative to ammo counter variable. Otherwise, play sound gun click. When object bullet is created play sound bang, move in direction. If bullet collides with player, play sound ouch, -15 Health from variable P1Health. Delete self.

This kind of object based drag and drop game logic felt tangible to me and I could link it together to make things that actually functioned within a very short time. I created all sorts of game demos. 2D Platform games, top down game where I could fire a key at a car and then take control of the car and drive it. Something similar to a dancing game where arrows would fly up from the bottom of the screen and I would need to punch the correct arrow key when they lined up. I had invisible objects attacked to each flying arrow and each arrow at the top of the screen acted like a sort of punch card. The invisible objects looked like litmus test paper with different colors when visibility was turned on. That way it could judge a perfect step, a close step, a way off step, or you just made a step and nothing was there. That way it could reward points for accuracy.

I just do not understand how to go from a basic day one programming tutorial for something like python with pygame then go on to do something like modding a 3D FPS. The basic logic puzzles they give me don't give me a lot to go on for how to make anything tangible that I would use.

Does that sound stupid? Am I just not trying hard enough or what am I missing?

User avatar
Gireen
Graphic Designer
Posts: 295
Joined: Wed Mar 07, 2012 1:26 pm UTC
Clan: [DoH]
Location: Germany
Contact:

Re: How Difficult Would This Zombie Game Be To Re-Make On This Engine?

Post by Gireen »

I admit i didn't read all this long text now. But i answer to anything i glanced over.

You will have to learn how to read the code. If you look inside Unvanquished you can understand how things work and where you need to change things.
For example with teamchange on death you would have to look at the part what happens if a player dies and add something like if the dead one is human move him into the alien team.

For team locking there is an admin command called ... lock
You can search for g_lockTeamsAtStart in the code that might show an example how things work.

Anyteam mod is not compatible with the latest version but you can learn from it
https://github.com/slipher/Unvanquished/tree/anyteam

The same goes with an old tremulous zombie mod
https://www.youtube.com/watch?v=cPoWqy3VQGo
https://github.com/AlienHoboken/Tremulous-Z-Server
The folder structure is much different that Unv since its engine and game in one but they share the same ancestors so maybe you can also port things from there.

fear ma engrish :granger:

Zombie Dude
Posts: 9
Joined: Sat May 15, 2021 2:20 am UTC

Re: How Difficult Would This Zombie Game Be To Re-Make On This Engine?

Post by Zombie Dude »

https://www.youtube.com/watch?v=SuxfWevJpSc

A video showing zps and me describing what I want to keep and what I want to ditch from that game.

Post Reply