|
Post by lgb3d on Nov 19, 2024 13:39:21 GMT -5
Yeah I'm not looking at it right now, but the universe registers I think pertain to some of those that we don't use. Keeping track of game wide things. Example how many guards are left on a level
I thought it was strange when I started seeing guards trapped who were not trapped. Place two walls about 400 units apart and a third wall That's perpendicular to it a short distance behind a pathway and a hallway behind it. In the center of the pathway 200 units from either of the two parallel walls at their far Corner near the hallway place a guard he will get stuck and start spinning around or just in there confused he might try a pot shot now and then and he might not even be reactive to bullets or very slow to react like almost a minute after being shot react this is little lost land mode and he is trying really hard to find an angle that he can move out because everything he sees everywhere is him hitting a wall.
Smarter replacement little lost lamb is not much better but these lines of code serve that purpose.
I modified the angle after alert somewhere around run, I made the angle a bit steeper if you get too far it'll make a graphical glitch displaying a reverse image but if you hit just the right number you can get them to travel further faster as they're traveling longer straighter lines instead of the serpentine zigzag at 45°. But you still want a little zigzag to to make them hard to hit. Like they're trying to avoid the player but I made the distance of the initial run longer making the zigzag less and the angle steeper. You can do similar but different with retreat so that they get as far away as possible. Like give them a greater distance and maybe less zag and they'll look like they're running home to tell their mama but they'll clear that distance quicker and re-engage the player from a different position faster. I downloaded a free version of vs a month or so back wanting to try to decompile and look inside some of the operating programs similar to what you've been doing. But I never got around to doing it, I'm not really familiar with how that program operates so I got pretty frustrated with it quick. But to see how easy it is to read yeah I want that I've just been reading it through Notepad for years, and it's much harder on the eyes compared to what I see in the screenshot.
There are a couple other examples that demonstrate how to create or move to a location and calculate how to get there. So I noticed that math was a bit different and tried making different blocks using some or all of it and for certain angles yeah I was getting the knockback right but some angles it was just sending the enemy all over the map or to the center location of the map absolutely crazy results but as shown I wasn't crashing the game and I was getting something which means it's possible
As possible has them finding the angle of the player and stepping toward him just has to be done in Reverse like the retreat.
Mystery I think you're right. Pie in the Sky told us this game could be made in 2 weeks by a motivated person or two. But we were young baby motivated but not perfectly focused. Many projects that felt like large things at the time really passed by in a couple months before we either gave up on damaged or started something new. Like think of the duration of a school year that would have been a very long devoted project. Now how much free time would you need to make a game in 2 weeks and have it come off as anything other than clipart or existing assets and how great would your pixel art AKA GCS paint efforts turn out to be..
Yeah I've said it to myself a few times and it's cool to hear it from others, it's not just the curse of the GCS is definitely magnified by Duke Nukem Forever, development hell. But in reality it's heaven, because nobody paying me, and every time I discover something I have all the time in the world to put it in it hasn't been two years of trying to figure out how to make a game it's been 2 years of discoveries and implementing what I found in the game. Polishing refining and then find something else to add. If all I was adding were a few walls and doors a universal register and a warp to point a couple sounds later game would have been done. So at times I really wish I had seen point B already but I know if I was there a year ago the game would have much less special about it if I was there a month ago so it would still be some really interesting things missing.
I think by the time it is done done, I'm going to try a little bit more to make some special things happen with fourth and if I can't get them I'll throw in the rag and say I'm done and let everybody play it.
But you guys are right even before it's done done beta testing is important, so far there's only two people me and schizoid have played this at first he told me it was brutal hard, there's a little bit of a learning curve. But it's really not that bad it just requires the player to be a little more Savvy or Tactical. And half of the amusement from the game is the player dying, similar to those coin-op games convincing you to add a quarter to continue. I'll put everything nostalgic I could so far into this project.
I might be a little crazy I just have to come out and say it I am in this thread to hear about zero Target, I heard it has some Cutting Edge 3D.. really looking forward to it you know Capstone Pinnacle of entertainment was forced into bankruptcy when zero targets predecessor was released Lord only knows the impact this game will have culturally not only on game players but on the hardware that they use to play the games, forcing people to evolve their computers dedicated video processing boards. It won't just be a prophet for the mysterious creator... it will rake in profit all around the industry, even the dude it's a dell kid is going to make money advertising. The best part is they have promised it will be released before many other games that have been caught and development hell since the mid-90s. Finally when game players had spent half a lifetime waiting, they won't have to wait much longer, zero Target.
Love you guys and I get it we can talk just about anything anywhere, but I'm really looking forward to reading and seeing more zero Target, but not wanting to miss any of the conversations that we do have.
|
|
chris
Junior Member
Posts: 58
|
Post by chris on Nov 19, 2024 15:00:14 GMT -5
Neo-Geo was what got me into arcade machines. I played Metal Slug at the local Pizza Hut in high school and was so in love with it I figured I'd buy an AES. Then I quickly realized it would literally be cheaper to buy an MVS cabinet and the game than to mess with the home system, so that's what I did. Got a 1-slot converted from an old Centipede cabinet, and the rest is history. At one point I had 11 Japanese candy cabs including a Neo 29 and Super Neo 29 with a Hyper Neo in it. Sold them all years ago. What I have left I don't play much anymore and also thinking of selling off, but friends love playing them at parties so whatever.
Yeah you got me curious, looks like I released Ultimate on 4/20/96, so I finished my first GCS game about 4 months after receiving it for Christmas (and it shows). 2 of those months was probably me making test levels just to get used to it. I was in 5th or 6th grade at the time. It was just cool to say I made my own Doom clone, it didn't matter how much it sucked, it was cool to me.
I went ahead and tried to uncomment the :roborelease code. It kind of works. If you kill someone, stand over them, and press enter, you'll be treated to a critical error telling you the pickup number isn't defined. But where on earth is the pickup code being defined? Guess I need to read up on how Forth works.
|
|
chris
Junior Member
Posts: 58
|
Post by chris on Nov 19, 2024 15:11:27 GMT -5
Oh as far as setting universe registers in Forth, I had some success there. If you do something like "127 ureg! 5" it will kill the player with deathcode 5, pretty neat stuff. You can also read registers but I haven't tried that. Could probably do some fun stuff with that.
|
|
|
Post by lgb3d on Nov 19, 2024 16:55:09 GMT -5
Yes this is cool and could make interesting for gameplay. There's a lot of diversity that could be created based upon events in the game and the guard reaction it does not have to be registered 127. But the trick is getting the guard not just to count but to have an action based upon.
For different interactions in my game I have different death sequence to make the challenge and losing not a negative but more entertaining. If a machine gun guy gets you you see this crazy series of Graphics demonstrating it if a guy with a flamethrower gets you if a suicide bomber gets you Etc on and on. But something I wanted to incorporate was the fourth guard.
Since all bass guards use guns I have a unique death sequence for 127 value zero that demonstrates a random bullet being what ends the player life.
But the ability to isolate different enemy type based on flying guards or walking guards as described before.. yeah that would be cool there could be unique death sequence for that minimum two different guards, but on the other hand the guard would have to have in its script the ability to read and understand the players health and that final step flow and catch interrupt understanding that his shot was the final shot and then established that Universal register..
But if it is not the player's death yes at various points in the script that pertains to all guards of fourth script you could have unique things such as the player turns off the light they all Branch to security mode where they just stand and wait.. because it's dark they can't see they're not wandering around they're going to hunker down until they have direct line of sight with player.. that's kind of a crazy example but I'm sure you understand what I mean if the player can control the environment and establish a universal register through that environment or action that could change the activity of the Guard set...
Or perhaps it's something like player is in a room with line and sight of guards they might have or might not have access to the player perhaps he's in an isolated room that has Windows so he can see the guards outside the windows. When he engages self- destruct for the facility all guards skip to retreat. So what the player would see is all the guards who might be randomly wandering or engaging him suddenly turn their back to him and start running like oh crap this place is about to blow. Just a random example that is probably pretty achievable, but who playing the game is going to really appreciate or recognize those Minor Details even if the Creator goes to Great length too script and incorporate it build a level around it to make it obvious
|
|
chris
Junior Member
Posts: 58
|
Post by chris on Nov 19, 2024 17:04:13 GMT -5
I had some luck with making an enemy drop an object. If you uncomment the first line of :roborelease and add a line underneath it like this: clst cl0[]@ 2 or clst cl0[]! ( make object pickupable ) 16 clt1 cl0[]! That will allow you to pick up a shotgun from the dead enemy. However it picks up the entire corpse. Probably a fix for that, not sure. Essentially the code reads like this Line 1) Fetch the current state of the object. Use a bitwise OR to set the object as pickupable (by adding the 2 bit flag). Write the modified state back, marking the object as something that can be picked up. Line 2) Set clt1 (the "1st red box" value) to 16, then write it to the object One thing I've learned today is @ in forth means reading a byte, ! means writing a byte. Such an odd language, but I can see why it was chosen for this purpose, it was basically the Lua script of its time, really easy to integrate with projects and not very demanding in disk space or memory. Love the idea of turning out the lights which sets a register to maybe make the enemy visibility range cut in half. Totally doable
|
|
|
Post by lgb3d on Nov 19, 2024 17:22:53 GMT -5
Wow I've been messing with that code for a while but I see what you did with the 16.. I'm just starting work but I wish I was available at home on my computer this is a fascinating discovery.
Somewhere in that has to be that not the body disappear but that the graphic change when inventory item is picked up. As that was a function in Prior game where player pick up the uniform and the graphic of guard in his underwear is still present in the guard Library let alone if I remember right guardscr there is a frame referencing that graphic. So it is supposed to Branch to that frame number..
I really appreciate you guys and your recent activity, and I just wish this thread blew up with screenshots of zero Target this weekend and that's what we were talking about here but this is also fascinating and wonderful.
|
|
|
Post by lgb3d on Nov 19, 2024 17:44:21 GMT -5
Dang it this gives me an idea. In later releases we identified guard set through the attribute box I think it was the second or third attribute box you place the number that's associated with the Enemy type you want guard to appear.
If..=x then..
So we could select a guard modified one of his attribute boxes to hold a value. And when he died then he alone create pickupable object unlike the rest of the guards on the level.
And this does not have to pertain to pick up objects it could be employed at various places in the code scanning to see if the enemy is carrying that value and then execute an action based upon the value of the guard carries in his attribute...
Dang I cannot wait to get home and turn on my computer. Thanks a ton Chris I knew when you chimed in stuff was going to start happening can't predict what but you always come through with some facts..
As well I want to get back to the root of this conversation at some point I think there's something to the potential for projectile firing enemies because projectiles can't exist in the universe. They do exist in the engine. But they need to be coming from An Origin that the guard can pull from his Library his definition file and Associate a handle with projectile. Code it into the fourth script with the condition that the guard has to carry a value in his attribute and if so when he fire he fired projectile.
With existing script of projectile it would probably cause the origin to be the players location and the point B the direction to player is facing. If we turned it around and made the origin the enemies location and point B the aim angle,.. that should do it
They existing script for projectile already has in its physics recognizing objects so if projectile Miss player and hit wall you get boom.
So what would have to be added is that it is scanning to see if it lands in the location the player is currently existing. That might be the tricky part. But some of that is already demonstrated how to achieve through the fourth script..
I'm angle gets the location east west north south, but and another block I think run distance demonstrates that it understands where the player is and what distance from the player to stop.
So the ingredients for identifying the players exact current location are already existing in the script.. perhaps if we crack the code on the projectile and its physics it is written in the same language as the guards traversing through the level therefore the existing code identifying player location would be highly relevant to it being able to not only target but recognize when it lands on top of player.
|
|
|
Post by lgb3d on Nov 19, 2024 17:49:51 GMT -5
This is just Theory and I might be off but it would be borrowing from what's existing in the engine a little rescripting effort and placing it where the guard can pull it from. And then programming a guard through attribute box to have the ability, if fourth script recognize that value is carried by that guard when he fire you get projectile heading toward player.
The animation that I use for explosions Etc suicide bombers Etc that spawn additional animation come from the object text. Well the explosion comes from weapon directory. So perhaps it doesn't have to be placed in enemy folder or directory maybe it just has to be in the object directory and to get it to work game wide like my explosions or fire bomb we have to ensure that on each object text for each level the projectile carry the same handle number?
I think we are really close to answering Mysteries question about projectile firing enemies and something that GCS creators have wanted a long time
|
|
chris
Junior Member
Posts: 58
|
Post by chris on Nov 19, 2024 17:53:39 GMT -5
Yeah man I'm having the same thoughts. There might be a red box or two not in use by enemies that data could be stored in. Whether they drop a weapon and what kind, flags to modify behavior, etc.
Still too early to tell if projectiles would work. Have you seen a way to spawn objects via Forth? Creating a pickup doesn't count since it's actually turning the corpse into a pickup itself. I haven't noticed anything but that would be the needed missing piece. You can spawn objects with a fluid, but you can't spawn an enemy or pickup as far as I know (I've tried). But yeah if we can find a way to generate an enemy from an enemy, then pass a flag into it to tell it to behave like a fireball and just have it go in a straight line and die when it hits a wall, that's all doable I think. But I'm still a noob to Forth so I have no idea what's possible.
|
|
chris
Junior Member
Posts: 58
|
Post by chris on Nov 19, 2024 17:55:52 GMT -5
You know I think it's probably doable to transform a guard into a fluid. So you could have an enemy die in an explosion and spawn a fluid that then spawns more fluids to make it rain gibs everywhere. You need to make this happen in your game lol.
|
|
|
Post by lgb3d on Nov 19, 2024 18:10:04 GMT -5
You might be a noob but you're a real quick learner.
Yes with the fluid we can spawn. But so many of those calculations are similar and apply to the third and fourth box in the attributes if I remember right because a fluid file has what like eight or 10 columns and the last few pertain to those boxes a noob would believe delay time, and an illegal delay time could change the following line instead of a frame number to skip to to an actual value. Well those two columns pertain to I believe the third and fourth box in the attribute..
So if we could through fourth script access the third and fourth box in an attribute and have the guard predetermined to hold those values one the trigger to recognize yes I'm holding a rocket launcher and then set that third and fourth box to the appropriate values momentarily to spawn yes the guards should be able to spawn something new..
I'm away from my computer now but my memory is that all guards hold a few values in those attribute boxes which represent different things such as they're firing speed or the angle that they start at, or their characteristic if they stand and shoot or wander around. So we might have to interrupt that momentarily through the fourth script when the trigger is pulled by the guard when he executes the shoot command.
Yes I agree with you and I have tried a few times but you just got me a lot closer to understanding something I've been looking at a long time. I was not visualizing spawning a rocket I was visualizing spawning a short animation of blood. But if this is functional, the projectile might be a ways off, but the ability to spawn that additional graphic of blood or Gore momentarily when the enemy is injured killed or Gib. That's closer than I thought a few days ago. Like I believed it was possible but your Discovery here is not as much the pickup object but identifying that what represents box one box two box three box four.. because those boxes pertain to the same placement as fluid objects pull from if similar calculations example such as command 84 84 * 256 should occur..
Here is another very interesting thought,
When we script an animation outside of the editor we can use more than 40 frames. But when we play the game even if the level memory and world is at Max it does not crash the game.
I did an experiment in the past where an explosion loops and in its Loop it keeps spawning explosive barrels that self detonate because they are being hit by the blast of the initial explosion which is looping and their own explosions which are perpetually being spawned.
So in that experiment I sat and watched for about 5 minutes hundreds of barrels appearing one after the other exploding exploding exploding on a level a map where the memory was almost already at Max as well as the world I might have been able to squeeze one more wall into the world.. but all those auxiliary animations did not cause the world meter or memory meter to increase or the game to crash. So writing that script that calls on objects to be spawn, even when more objects were present in gameplay than were actually placed on the map never caused the game to crash glitch no issues no problems. Is this because the editor limits us at a certain threshold to avoid getting too close to the edge of memory limitations leaving that bubble so that sound Etc has enough space.
I hope you're catching what I'm pitching I'm thoroughly impressed by what has been achieved, but parts of it leave me scratching my head like you build this huge level with a bunch of graphics and it tells you you don't have enough room to place another object, but then you play the game and your animation introduces 100 extra objects with no problem.
So I think part of the limitation of what we can cram into a level is not as much the engine as the editor and the safeguard that might have been put in place to make sure there's enough space in the bubble
|
|
chris
Junior Member
Posts: 58
|
Post by chris on Nov 19, 2024 18:34:53 GMT -5
Yeah I think the editor has always been the weak link in the GCS. The engine will run admirably well with whatever you throw at it, but because it was a product from the 486 8mb RAM days and because the editor development would be complex to support everything, it really cuts itself off at the knees unnecessarily. But yeah one of the main achilles' heels of the DOS engine is I just can't find a way to spawn enemies and pickups. We now know we can do a pseudo item spawn off of an enemy which is cool and might make say our idea of a store you can buy items from easier to do. And I'm confident that using Forth to create a projectile would work, but I just don't know if there's a way to spawn it. I do see what you're saying though, you could sorta do it like this: 1) Animated object enemy that looks like a guy with a rocket launcher 2) Sets ureg 5=1, which causes an invisible deactivated guard to turn into a rocket, which finds the player location and launches straight at the player 3) Enemy hits the wall, player, etc. and turns into an animated object which creates an explosion, then deletes itself 4) Animated object enemy then sets ureg 5=2 to have another rocket awaken from invisible state and fire at player 5) and so on I think that is doable, but there would be a finite number of rockets and the animated object would not be able to move.
Also I think there is a hard limit to fluid frames, it's something like 50. But you could make a second fluid and spawn off of the old one before it deletes itself, that should work.
|
|
|
Post by lgb3d on Nov 19, 2024 19:41:20 GMT -5
You know that already been done.. the trick is getting fourth scripted enemy to do it. I did this already but by placing the rocket in game map at location.. and yeah due to the number of frames it can't travel all the way across the map convincingly or visibly, but could be applied to an existing level design and location. But with our talk of spawning, that changes the game.. See the way I have this set up is that there's an animation of a rocket that's waiting, two cannot be fired in the same path until one has completed its course. All three can be launched in succession if the player was to walk across all three platforms it would all happen real fast. But the enemy cannot rapid-fire one rocket in One path. But if I use the spawning technique yes as long as the player is on the desired platform it would be a continual stream of rockets. So that makes me think I should tweak the Rocket Man that I have in my game a little bit because it would make it more challenging and more like fast-paced OMG how the heck do I get through this like a stream of rockets instead of one every four seconds. Videos to demonstrate what I already did with this over the last couple years youtube.com/shorts/1nWpwFmNS84?si=kUDyUA-tZBfeFBqByoutube.com/shorts/-pWmwU154MA?si=VI_ezmfycsb796u8youtube.com/shorts/w2Vosw0X_gU?si=VFU3kf7ysb3_fm6iyoutube.com/shorts/1k4bfQ8CuHk?si=CQBcSx67GrPnQgKiSo with FLD it is doable and if the level design is something that enables it yeah it comes off pretty clean. But using the spawning technique instead of just simply animations waiting for Universal registers it could make it faster paced where there's a stream of rockets in a trajectory instead of one at a time waiting for an animation to complete its Loop. Dang I cannot wait to get off work this conversation today has given me some real good new ideas and perspective on tweaking the fourth script I have a little bit more. Like the thought that the fourth enemy might be able to spawn something if that is achieved that is rad. But I think using the placement of the four boxes in the attributes that would be difficult from the editor as those boxes fluctuate and have to have that base startup to identify what the enemy is. But once the enemy is dead and put on pause no longer a bumpable object, I'm not sure how many and which ones but I would believe those boxes would become available to us as they pertain to enemy characteristics of movement action Etc well if it's an object that no longer has any action movement Etc just like becoming a pickup object, there might be potential to use those attribute boxes through the fourth script to spawn something. Maybe extra Gore or even a pickup object. And a little further down the line if things are working out maybe even a projectile from a living moving guard
|
|
chris
Junior Member
Posts: 58
|
Post by chris on Nov 19, 2024 20:33:39 GMT -5
Nice! Yeah that's the idea I explained at first, using a fluid to spawn fluids, that totally works, as long as you're in a controlled environment like you have demonstrated.
I've thought about this a little more and here's a theoretical way you might be able to get a Forth enemy to shoot a projectile.
1) Place a guard and set a number in one of the red boxes 2) Have the forth guard pick up that number to use as a unique reference (let's say 1) 3) Place a second guard anywhere and give it a different number in the red box (let's say 2) 4) The 2 gets picked up in Forth and tells it it's a rocket 5) Enemy 1 fires weapon, but instead of shooting a bullet, it sets ureg 2=1 and sets ureg 3=xcoord, ureg 4=ycoord 6) Enemy 2 picks up the ureg 2=1 and sets its coordinates to ureg 3, ureg 4, then aims itself at the player and flies towards him 7) Enemy 2 upon any collision, morphs into a fluid explosion, then if possible with a timer, morphs back into the rocket, but in invisible disabled mode and sets ureg 2=0 8) Enemy 1 picks up on ureg 2 being finished and knows it can fire again when ready (repeat step 5)
It would take some not so fun Forth scripting but I think it's doable? Only drawback I can think of is every rocket enemy would need its own personally paired rocket so it's not constantly stealing rockets out of midair from other enemies or other weirdness. Also the rocket would need to avoid collisions at first so it doesn't immediately blow up the enemy that places it. So this gets around the "spawning" problem by just placing and recycling a Forth enemy over and over again.
Again, there are some unknowns here and this is all theoretical.
|
|
chris
Junior Member
Posts: 58
|
Post by chris on Nov 19, 2024 20:53:10 GMT -5
I just placed a few guards and noticed that the 3rd red box seems unused. But also seems most of the enemy stats are stored in GUARDx.4TH, there's a list of the guards on your level already uniquely labeled. I bet you could use this file to store new parameters as well such as whether it's a rocket enemy or a rocket itself, or what enemy the rocket belongs to. Just thinking out loud here.
|
|