Scenery's TRENCH WARS - REVIVED AND OPEN

Author Topic: Scenery's TRENCH WARS - REVIVED AND OPEN  (Read 4196 times)


that match was absolutely sublime

stuff that happened:
- i built like, 3 or 4 different tunnels and gyt sniffed them out like the loving truffle dog he is and dug them all up
- i built a skybridge sky tunnel to the enemy base and then figured i was stuff out of luck if i wanted to get down as well (although some ideas involving the enemy's dumpdirt towers did come up)
- gyt and You eventually tracked that down too and built up to it from the other side
- mexican standoff between me and gyt, involving several headshots and very high amounts of spear knockback abuse
- gyt getting grappled out of the sky by a faithful comrade
- siba and thotley turning our base into a national socialist stronghold, by removing every last block from the floor and building a wall taller than god himself
- me and others (mostly me and my handicapped tunnels) getting 4 outta 5 captures
- the enemy catching on and welding a shovel to dannu's hands
- dannu digging the single largest trench in human history
- me sneaking past dannu anyway cause he's a blind forget
- an infernal stalemate because both teams have impenetrable defences
- stalemate solved the only way it can be: server crashed


the aforementioned national socialist fortress of hell, as seen from my skytunnel stairs:

loving lovely game
« Last Edit: November 27, 2016, 07:29:55 AM by Tudoreleu »

i think the random ass crash was the only possible way that match could've ended

also server is back up

when jim has your flag


Also, how it works?
the play of the game system works by recording positions, velocities, direction, items, animation, damage received, and death every 30 milliseconds. its optimized so it only records position, velocity, and direction every 30 milliseconds and stores special data when players take out items, animate, receive damage, or die. the play of the game right now is 15 seconds long and the way my system stores data means i will only have to save around 500 - 700 variables to file when someone gets a play of the game. this can be done quick enough that saving 30 players worth of data won't hang the server up for more than 20-30 miliseconds (this can be improved though so it doesn't hang the server up at all). a save file is also created when the potg is made so that an accurate map will be loaded for the potg replay so the replay won't look glitchy due to added/removed bricks after the potg was made. detecting if someone gets the potg is simple i only check to see if someone gets more kills in 15 seconds compared to the previously awarded potg kill count (note: i want assists to factor into calculating who got potg too which will be done soon). when there is no potg, you have to get above or equal to 2 kills in 15 seconds in order to win potg. this guarantees there'll be a play of the game because pulling off 2 kills in 15 seconds is quite easy.

in order to play the potg back, the save file is loaded up to a different trench 'arena' so i don't have to delete bricks in the other one. bots are then created to represent players and using schedules play back the data stored in their respective recordings with their positions offset so they are placed in the replay arena. avatar data is also saved when the potg is made so even if someone disconnects there'll still be a bot for them in the replay. my friend charles made a cool little build to show who got potg and during the time the other players in the server are watching that title build thing the map is being loaded up at a fast pace. the script i made for loading it is able to load up 9k bricks in under 5 seconds thanks to the simplicity of a customized save file.

Can you tell us the problems you have run into while making play of the game and your solutions?
this is the actual interesting part of this post because you might actually learn a thing or two from it. one of the more important issues i faced was figuring out an efficient method for creating/storing the data. before i seeked help from zeblote i only knew of three ways to record the data: increase a number for a global variable and store data that way which means a /massive/ amount of memory would be used up because i was creating new variables without deleting the old ones every 30 milliseconds (i calculated that it would use up 21 mb per minute for 16 players, in an hour it would use up 1.2 gigs of ram which is just unacceptable). the second way was to completely delete variables (via DeleteVariables() ) after i didn't need them but that proved to be slow and significantly affected the ping even though i was only deleting a few variables at a time. this method seemed to be the best memory wise because it didn't waste any memory at all but having a bad ping in a tdm game is unacceptable. the third way was to simply clear the variables after using them. this is different from completely deleting them; it just assigns an empty string to the variable but the variable pointer is still stored in who knows where in the memory. this was better on memory as it only used up 4.2 mb per minute for 16 players but in my eyes any memory (or ping) increase was unacceptable and wouldn't work. i was stumped so i asked the god of blockland modding zeblote for help and he told me to use a circular buffer system. this means instead of creating new variables whenever i need to store new data i just reuse old ones. here's the wikipedia article: https://en.wikipedia.org/wiki/Circular_buffer . i swear whoever created this looked into the future and saw my potg struggle and made this just for potg because this method of storing data is perfect for potg data.

playing back potg data also proved to be a struggle because sometimes the recordings would be out of sync for recently connected players. this would mean that the new players' recordings would be out of sync and would make everything look forgeted up. this was an easy fix however i just stored the time the recording started for each player and if there was a difference compared to the mode of starting times the different players' recording would be offset further in time.

any other issue compared to these two are minuscule. i encountered various issues concerning recording and playback but they were fixed with only a few lines of code. this is a testament to how easy it is to make good things for blockland though. i started making the potg on monday this week and it was ready for use on wednesday. i worked hard on it for like a total of 10 hours. its only 1000 lines of code long and can probably be cut down to 700/800 because i left a lot of the old code commented in case stuff went wrong. this is a testament to making cool things in blockland. if you have a cool idea, no matter how complex, if you work hard on it you'll finish it quickly and without huge issues (the data storing issue i just described was an easy fix once i asked for help (also ask for help if you're forgeted people will answer because people in the modding community are good people)). you'll also learn things too like how i learned about circular buffers in my potg creation adventure

i hope i answered your questions well. if i didn't post some more and i'll answer those too

some ideas;

forget hunter hes so boring just get rid of him
• a revolver class who has a short ranged SPACE MAGNUM that ricochets off walls, and can headshot after the first ricochet
• a guy with a beggars bazooka who slows down while charging his rockets and cant move voluntarily while firing them, but on the bright side he has a billion rockets
• a beacon class (actually just call him Beacon) who always has a lowkey (like 10 / second) healing field around him and a slower-firing static beam, like a manual tesla coil
• a pseudosniper class called the Mobeel who when he jumps causes a rocket-like explosion that actually hurts him a little (15hp) but also has a cool railgun thats instant hit but has like half the range of the normal railgun
• give everyone more knockback (like 2x) and just see what happens
• a guy with like half gravity, 80 health and a laser bullpup (ie: a bullpup, but it fires twin spam rifle lasers) called Moonman who has a special ability to lunge in the direction hes looking like tracer or genji. his Moonman Shuffle recharges every 10 seconds, assuming he has touched the ground since then
replace ammo with health kits
• a guy with like 50 health who can throw out Orbulons (literally just white points of light) that slowly fly forward, shooting autotargeting but not homing (soft or otherwise) projectiles at everyone within like a 32 block radius forcing people to move around. if the guy dies, his Orbulon(s) disappears. also if the Orbulon makes direct contact it just explodes like a forgetin rocket
• a demolitions guy who can just drop like a islander moai style cube of dynamite that explodes after a little while, digging out a small area of blocks around it for him. it can be defused by the other team by just shooting at it. he has a shotgun too i guess
• give buck a lever shotgun instead of what he has now and make it so that if hes looking even vaguely near you (like a cone) and hes close enough he always hits with the conc blast allowing him to pester groups of enemies all at once by just knocking them around. as a downside, he no longer has mad hops
• a guy who can build a Harmonica, which is a turret with 5 guns arranged in a straight line facing in the same direction, to cover an 8x8 lane. the harmonica fires every 5 seconds in 3 shot bursts (so 15 shots total) and can be used to cover entrances. hes got an assault rifle too i guess

Quote
  • a guy who has nothing but a knife and is super fast, but every time he moves he plays mariachi band music. he also wears a sombrero

wow cool idea bushido lets add it

some ideas;

forget hunter hes so boring just get rid of him


bushido trying to get rid of snipers volume 160

-snip-
sounds woefully inefficient, why didn't you hook advanceTime and just handle it that way instead of using schedules
also global variables for storage make me BLEED


sounds woefully inefficient, why didn't you hook advanceTime and just handle it that way instead of using schedules
also global variables for storage make me BLEED
it's all in ts im not going to spend 10 years relearning how to do dlls again

-play of the game stuff-

Hey, I would be really interested in adding your Play of the Game system to Slayer. PM me if you're interested.

tfw you join the server at 0/20 and 20 minutes later it's up to 14/20

also, me and wafflecake never managed to finish our fortress wall. our team was just too dang good, won before we could get it

pics taken at one point til win:




my actual plan:

« Last Edit: December 04, 2016, 02:29:52 PM by Tudoreleu »

to think all this shenanigans started from bushido telling gyt that i made a 4x4 trench mod edit 6 months before the first time this was hosted

im really glad to see this have gotten this far. as a lazy forget myself I find completed projects and coding work like this impressive af.

grappler best class im willing to fight