game-programming

I’ve been pirating games, programs, movies, music, ect. for like 8 years now and I have only ever gotten ONE letter from my IP in that entire time (I never used a vpn or anything either) and it was because I torrented Skyrim and Bethesda contacted them about it and the longer they try to milk skyrim for every cent they can the funnier that gets

anonymous asked:

Is there a situation where input lag is purposely added to a game? Theres ongoing debate in the fgc about sfv having 6.2 frames of lag on purpose due to online play, and how it relates to how they use their cfn to allow crossplatform play between pc and ps4.

Yes, that’s actually pretty normal. If you want online play, you need some amount of input lag to serve as a buffer so that both players will get the same results at the same time. The amount of lag will vary depending on the game, but it’s pretty normal to have some amount of input lag to provide a buffer in order to allow for fair gameplay. Let me show you what I mean. Normally, when Ryu presses the roundhouse button, the signal from Ryu’s controller goes in, gets processed by the machine, then the move starts. In a lagless environment, this is a timeline example of what would happen:

However, when Ryu is fighting Ken online, there’s not one single timeline, but actually three separate timelines - one for what Ryu sees, one for what the server sees, and one for what Ken sees. The difference is that these are not synchronous by any means, because it takes time for Ryu’s game to tell the server that he pressed the roundhouse button, and then it takes time for the server to tell Ken that Ryu pressed the roundhouse button. So it actually looks something like this:

If it takes 50 milliseconds (3 frames) to transmit data from Ryu to the server, and another 50 milliseconds to transmit data from the server to Ken, then Ken won’t register Ryu’s roundhouse button press until 6 frames after Ryu pushed the button. Ryu likewise would also not see Ken’s moves until 6 frames later. Obviously, this isn’t so good. 

Imagine this scenario. Ryu and Ken are right next to each other. At frame 0, Ryu presses roundhouse (startup time: 5 frames). This means that Ryu’s roundhouse will hit on frame 5. At frame 1, Ken presses jab (startup time: 3 frames), hitting on frame 4. In a lagless environment, Ken’s jab would hit before Ryu’s roundhouse on frame 4. But what if this were online with 3 frames of latency between each player and the server? 

If this happens online, Ryu’s roundhouse button press signal wouldn’t reach Ken until frame 6 (pressed on frame 0 + 3 frames of signal travel time from Ryu to server + 3 frames travel time from server to Ken). Ken’s jab signal wouldn’t reach Ryu until frame 7 (six frames of total signal travel time), and suddenly you have three different stories going on. Ryu believes his roundhouse (pressed on frame 0, hitting on frame 5) cleanly beats the jab that was pressed on frame 8. Ken thinks that his jab (pressed on frame 1, hitting on frame 4) cleanly beats Ryu’s roundhouse (pressed on frame 6, hitting on frame 11). The server receives Ryu’s roundhouse at frame 3 (0 + 3 frames travel time), Ken’s jab at frame 4 (1 + 3 frames travel time), and thinks that Ken’s jab actually stuffs Ryu out of his roundhouse at frame 7 (1 + 3 frames startup + 3 frames travel time). If the server is authoritative (as it should be), that means that it sends the signal to both Ryu and Ken that Ken’s jab beat Ryu’s roundhouse, which will then happen on frame 10 for both of them (server says it happens on frame 7, but it takes 3 frames of travel time for the signal to reach both of them). This is probably super annoying for Ryu, who pressed the roundhouse button 10 frames ago and still gets stuffed by the jab he didn’t get until 7 frames later, when the server decides that Ken’s jab won.

Now let’s assume that there’s an input delay of 8 frames. The same input timing happens - Ryu presses roundhouse on frame 0, Ken presses jab on frame 1. What changes? Because there’s the delay in the moves actually starting, all three parties now have enough time to synchronize the events before anyone expects the attacks to happen. This means all three will see the same events play out on the same frame numbers.

With an input delay of 8 frames, Ryu knows his roundhouse won’t register until frame 8, and won’t go active until frame 13. Ken knows his jab pressed at frame 1 won’t register until frame 9, and won’t go active until frame 12. The server has enough time to receive the input data from both fighters and then update them both with enough time to spare so that both Ryu and Ken will see the exact same thing happen on their screens exactly eight frames after they pressed the button. This input delay allows the server to keep them both in sync. The better the connection, the fewer frames of input delay there has to be in order to arrive at the same result. In this particular example, we could probably shorten it to 6 or 7 frames of input delay to maintain parity. If we could decrease the latency between Ryu and Ken, the input delay could be reduced further.

So yeah. That’s how online play works for almost all games played in real time. Synchronization is hard. Signals aren’t instantaneous; it takes a non-trivial amount of time to transmit data across vast distances. The only real way to handle that is by keeping enough of a time buffer. There are various (and similar) other ways of handling this; the famous GGPO method actually stores the last few frames of the game that have already passed, and retroactively inserts button inputs into the past and recalculates the game state in order to make the present synchronize up. This is what causes GGPO’s weird false positives, such as your game thinking you KOed somebody (and playing the sound effect for it), only to receive game data that retroactively undoes that event and keeps the fight going.

“But why not keep offline play without any input lag and just keep it for online play?” you might ask. They did that in past games. Unfortunately, this means that the online play is a fundamentally different experience than offline play. That’s not good if you want to foster an active global competitive community, because it means that anyone who can’t get local competition will be at a huge disadvantage. Keeping the experience consistent for everyone online and off will allow all players to practice and improve at the same game.


Got a burning question you want answered?

Not So Berry Legacy Challenge

Do you like the rainbow? Do you like the idea of playing with berry Sims but hate berry Sims? Do you want to mess around with aspects of the game you’ve never used before? Boy, do I have the challenge for you!

Welcome to the Not So Berry Legacy Challenge, a ten generation legacy with a focus on bright colors and new experiences.

Basic Rules:

  1. Each heir must represent the color of the generation (i.e. hair, makeup, clothing), but brightly colored skin is not necessary (these aren’t actually berry Sims, that’s the joke)
  2. The colors of the spouses don’t matter as they aren’t part of the challenge. Unless otherwise stated you can do whatever you please with them.
  3. Money cheats can be used, but not excessively. Suggestion: use freerealestate for your first home, but no cheats afterward.
  4. You may live wherever you please unless something is specified in the rules of a generation.
  5. Every generation is supposed to complete both the career and aspiration of the heir unless explicitly stated otherwise.
  6. Keep the lifespan on normal.
  7. If you play this challenge and want to share it with us, go ahead and post with #notsoberry so we can see!

My good friend @alwaysimming​ and I kind of created this challenge on accident, but I think it turned out pretty great. We wanted to make something that forced us to play with parts of the game we’ve never explored before. Hopefully you’ll have fun too. You can follow our gameplay on @mintiphresh​ and @lea-fey​ (pronounced “minty fresh” and “leafy”)!

Keep reading

anonymous asked:

I was watching a speed run of Prey (2017 version) where the speed runner managed to beat the game mostly by pushing into corners to glitch through walls/ceilings. My question is, why are the corners of rooms in video games so often full of holes to outside of the level geometry?

There’s a variety of possible answers to this question, and each is reasonably likely. It could be the level geometry itself, it could be the simulation/collision system misbehaving. I’ll try to give a condensed explanation for both.

Remember, level geometry isn’t like a real building. There’s no inherent sense of physicality to anything placed in the world, no gravity, nothing actually attached to something else. Everything is just polygons with pictures painted onto them, so it is up to the level designers and environment artists to make sure everything is placed properly. In early 3D games, these sorts of mistakenly-unconnected seams were called leaks. This was because there was no such thing as dynamic lighting, so the lighting for each level had to be calculated at compile time and couldn’t be done properly if the geometry leaked. If the lighting engine detected a leak, it meant that the lighting would be all wonky and the designer would have to fix it. It’s very easy for a leak to slip through - I can’t count the number of games I’ve seen with objects floating off of the ground by an inch or two, or wall decorations floating near a wall. Level designers and environment artists place a lot of objects and polygons; making sure that they are all flush isn’t an automatic process and can cause trouble. Some tools have settings to snap edges together to protect against this, but it isn’t always on and can be turned off for some cases. Accidental geometry placement often cause another common problem - getting stuck in a falling state. Often when you have a lot of geometry nearby that is steep and lacks a flat spot wide enough for a player to stand, the player can get stuck perpetually falling and unable to escape.

Another issue could be the way the engine handles pushing against solid objects. Part of this is due to the nature of how computers work - nothing is actually handled continuously, but over a series of discrete time steps. Every time the game updates, it must figure out where the character should be. Another part of it is the fact that characters established position is usually directly beneath the character, often between the feet. For example, if the position were to get shoved downward by just a few inches, the character’s position would be under the floor and the gravity would take over, causing the character to fall out of the world. 

If the character’s movement for the frame would change her position to one where her bounding box interpenetrates another polygon marked as collision, the engine will need to move her somewhere “safe”, usually by repositioning her at the very edge of the colliding polygon. However, the issue can crop up when the character attempts to push on two or more edges at the same time (like in a corner). The engine can’t apply all of the pushes at the same time; it has to go through each of the collisions it detects individually. Because it does this, it is possible for the later collisions to potentially push the player into a position that is invalid because it’s new “fixed” position - a perfectly legal position relative to colliding polygon B, now interpenetrates colliding polygon A that had already been processed earlier. Once the character is in a bad position, she can end up either stuck inside geometry, pushed somewhere else, or even fall out of the world.

Other common issues can be things like randomized forced movement. In World of Warcraft, for example, fear and teleportation effects could often cause players to get stuck in geometry or fall through the world. Imagine, for example, an ability that teleports you behind another player, ostensibly for a backstab. What happens if that player has his back to a solid wall? Where should your character appear? Should it be behind the wall? If so, that could end up being in a bad position. Should it be in front of the character? What if the character wedges himself in between two walls with no room? Another situation could be if the target character is standing on a slope while facing downhill. The teleport position directly behind that character would be underground, and would have to be adjusted upward in order for the teleporting player to appear correctly. But there would have to be height limitations too, or else the teleporting player could potentially get on top of objects not meant to be scaled by teleporting behind a confederate on a slope with his back to the thing you wanted to climb. And so on and so forth.

There are ways for engineers and level designers to try to work around these, but there will always be (literal) edge cases that can cause even the most carefully built systems to break down. That’s really what you end up seeing in these cases. Sometimes the result is great for speed runners, because it allows players to skip portions of the game. Most of the time, it just ends with the player getting stuck.


Got a burning question you want answered?

anonymous asked:

We know Lance is super smart, but... Headcanon that sometimes in everyday situations (or what counts for everyday situations when you're fighting a space war) he just loses all common sense and says and does dumb things. It happens so much and it's so funny that the team starts calling these times Lance Moments. Even when someone else does a dumb thing, it is called having a Lance Moment.

dude sorry this was one of those asks i’ve been sitting on bc i just. love to think of not only lance moments. but a whole array of paladin moments.

  • lance moment: when you get too overconfident and embarrass yourself
    • origin: “wow that’s like 1000 plus 10″, and other greatest hits
    • example:
      shiro: hey guys be careful there’s a bunch of debris up ahead
      keith: whatever i can handle it [promptly crashes into space garbage]
      pidge: LMAOOO KEITH LANCED UP
  • keith moment: when you forget all social etiquette
    • origin: just when the other kids had finally acclimated him to Teenage Interactions, he tried to fistbump a diplomat and it was interpreted as an attack
    • example:
      alien host: and here is our most sacred animal
      pidge: eww
      lance: [slapping a hand over her mouth] what keith here meant to say was,
    • pidge almost has more keith moments than keith. but keith’s are always more disastrous so he holds the title.
  • pidge moment: when you completely forget that there’s something else you’re supposed to be doing
    • origin: pidge was supposed to be developing a virus or something so everyone left her alone but after a full day somebody checked on her and it turns out she got distracted and had actually been programming a game on her computer
    • example:
      coran: oh, hunk! did you finish recalibrating the teludav?
      hunk: [surrounded by books on taujeerian biology] did i what
      pidge: AHA!! IT WASN’T ME THIS TIME!!
  • hunk moment: when you get overemotional at inopportune times
    • origin: everyone pulled off an incredible maneuver in the middle of a battle and hunk started tearing up and talking about how much he loves everyone and “hunk, i love you too buddy, but maybe save this for later”
    • example:
      shiro: …and you’re such a smart and talented young lady and i’m so proud of everything you’ve accomplished–
      pidge: ok ok i know hunk thank you but i really need to be hacking into this server right now
  • shiro moment: when you accidentally let something really morbid slip out
    • origin: after two sleepless nights, allura asked shiro if there was anything he needed and he replied in a monotone “the sweet embrace of death”
    • example:
      coran: it’s a fascinating creature honestly! once it has completed growing, it only has ten quintants before its body begins destroying itself.
      lance: goals
      keith: …are you ok? that was a very shiro thing to say.

bonus:

  • allura moment: when you surprise everyone with a previously unknown kickass ability
    • origin: the shapeshifting thing, and probably many others
    • example:
      pidge: [grabs a stick and knocks a bomb far into the distance]
      lance: what the heck
      pidge: what? matt and i used to play baseball all the time, i’m pretty good at it
      lance: god you’re such an allura
  • coran moment: when you pull a paladin moment, but play it off flawlessly
    • origin: anything he ever says. he’s making up half the nonsense that comes out of his mouth. nobody notices or calls him out on it.
    • example: there are none. coran is the only being known to pull off a coran moment.
7

Why is this so funny to me….

Okay I think I may need to explain myself a little. Back in college, I had to take a class where we had to learn some of the basics in the Unity engine (software that lets you render and program games). The default player model was this little pill-looking thing that would hover above the ground a little; and  if I had to guess, the default looked this way just in case the students were making a game in the first person view with no intention of creating a model for the playable character. 

So far we have no idea what Henry looks like, nor does he appear to have a shadow that would give off any hints to what he could look like. Even though there are hypothetical designs for Henry that I really like, my brain keeps coming back to Henry looking like this in-game because of the fact we’ve never seen what his character model looks like yet. XD

Glitchtale “Geonocide continues” theory

Ok, so to start off, the “Geonocide continues” or “Gc” theory is going to focus not on how plot progresses, but mainly on “How the game works from programming aspect”.

You may think that Camila wouldnt do something as “Advanced” as that, and you may think something like “Camila is animator, not a programmist DUH”, but let me prove you wrong.

In this case, she has basic knowledge on how game would behave, so lets continue.

Now, lets talk about how the game would behave.

Undertale save works as a text file, that game can read, for example, if you didnt kill papyrus it would look like that (simplified version)

Papyrus killed = 0

And in this case, “0″ means null, he was not killed.

Lets talk about how reset works.

It basically erases current variables all to “0″, but Undertale was programmed to remember some things.

Now, lets see how would it look if you had killed papyrus .

Papyrus killed = 1

And after reset it should have been something like that

Papyrus killed = 0

Right?

Yes, but with one exception, it would create ANOTHER variable, so the thing would look like this

Papyrus killed = 0

Papyrus REMEMBERS being killed = 1

And that is basically how undertale behaves.

Same works with routes, and as we know, Frisk had completed every possible route (seing every line of dialogue means beating every neutral version, because of unique Sans’ dialogue at the end), up to the Megalomaniac when they fail to complete Geonocide route.

Now, in healthy condition after resetting it should make save to something like:

Geonocide = 0 

But as we know, after Frisk had escaped they have created first glitch, allowing them to reset mid-battle.

Now, we’ve seen more glitches after resetting, meaning that something went wrong with “Reset” option.

And quickly we can come to conclusion that it didnt reset values, but created two values that cannot co-exist.

for example you can’t have values like

Papyrus killed = 1

Papyrus killed = 0

At the same time, because the game will not know what to do, creating more and more glitches after resets, as resetting adds false variables to the save file.

In Glitchtale, it eventually came to point where ONE MORE false value in save file, will make timeline (in this case save) to erase itself.

At this point in time, we know that we are on hard mode, because in “Yet darker” we saw the file being named “Frisk”

And as it is hard mode, game GAINS the ability to SPAWN objects, for example it can spawn final froggit in ruins.

But what if it can spawn something to fix itself?

As it is spawning more things, it also gains ability to create new “stories”.

The game is smarter than we thought.

What if the game was to create one powerfull being, so that it can fix the game itself?

And you are right, the game did that, and so the game created Betty.

Now, for some of you being like “But it was bravery who created her!”

I need to say one thing, the bravery, twins, and whole story is STILL inside the game, it is still INSIDE the window frame.

Meaning that game could “create” story for Betty to make it look less, well, suspicious?

How would Betty work by then?

Well, Betty would be just a “Eraser tool” to erase every false value to point it was last time the game was ok, and this last time was Geonocide run.

By that, it means that from these two values:

Papyrus killed = 0

Papyrus killed = 1

Betty would have erased “ Papyrus killed = 0 “, leaving him killed as it originally was on the Geonocide route before Frisk decided to glitch.

And what’s the order of killing?

Everything in the game needs to proceed with some sort of “order”.

And get ready for your mind to get blown,

The game thinks we are inside “Pacifist” route, but with Geonocide value, meaning it would take ONLY order we see in Pacifist route, and let Betty kill them by it.

AND WHAT IS THE ONLY ORDER WE SEE IN GAME?

That is right!

We dont get a chance to see anything other in normal pacifist route in game, so the Game itself took the only order it could find.

The core starting point is Frisk, and the nearest ones to stand by them will die first.

For example, Sans And Alphys are standing RIGHT next to frisk, and they died first, the next one in order would be Undyne, but she has the thing.

After some calculations I’ve come to this order:

- Sans

- Alphys

- Undyne (She will loose her whole determination but not die just now)

- Papyrus

- Undyne (Now she dies, no determination =D )

- Toriel/Asgore (it is hard to tell which one)

So as we came to the conclusion,

The villain is the game itself.

Thank you for reading, I hope you liked my theory, and remember, it is ONLY a theory, meaning it can be wrong with some things, or with everything or it can also be 100% accurate!

Feel free to voice that on YouTube, just say that it is MINE theory and put my name on screen and in description of video.

Don’t copy-paste theory, just reblog it.


anonymous asked:

I'm applying in the industry right now as a Gameplay Programmer, and one thing I have a hard time providing for companies is code samples. I mean, as a game dev, you never want your code to be too complex because it then becomes harder to debug, right? So what kinds of code samples are they looking for? What types of projects should I work on that would help produce those kinds of code samples?

Code samples are kind of a weird thing, because it’s often difficult to give one piece of code and get enough context to learn enough about the programmer who wrote it. Most of the engineering hiring managers I’ve talked with about this subject prefer to give self-contained programming tests instead of asking for code samples for this reason. That said, to understand what kind of code samples they’re looking for, you need to understand what they hope to learn from the code samples.

#1. We want to see you solve a non-trivial problem

We write code to solve problems. Some of it is fairly rote automation of stuff, and that’s something pretty much anybody can write… that’s not what the hiring manager is looking for. The more interesting samples involve solving a problem where there are multiple potential answers, and some of them are clearly better than others. If the problem can be solved in O(n log n), then the hiring manager will be disappointed if you solve it in O(n²). The best answers are fast, clear, and elegantly handle failure. Show us a real problem that you solved in a fast, clear, and elegant way.

#2. We want to see your mastery of the language and architecture

When programming in any language, there are going to be little optimizations of the language that can add up over time. In C++, for example, declaring variables of the same fundamental type together saves memory. Passing const references to objects is usually better than passing an object by value. You should know these kind of gotchas, because it shows a better overall view of code - we want to see that making little optimizations like this are second nature to you.

#3. We want to see your code’s legibility

You’re looking to join a team, and that means working with other engineers. At some point, somebody else is probably going to have to pick up code that you wrote and you’re not going to be around to answer questions about it. Maybe you’re on vacation, out sick, too busy, or have moved on to another project but, eventually, somebody else is going to have figure out how your code works by looking at it. You should imagine that this somebody has severe rage issues and will come after you if you force her to read difficult or awful code.

This doesn’t just mean “comment your code” either. While commenting code is useful (and I encourage you to do it), the code you write should be written with clarity in mind. The entire architecture of your code should be intuitive and clear. The function name should clearly state exactly what it does and it should return something appropriate. The parameters passed in should be easy to use correctly and hard to use incorrectly. A new programmer who comes in and looks at it should be able to understand what it does. A new programmer who just looks at the declaration should be able to figure out how to use it.

Overall, hiring managers want to see that you can solve problems in an efficient and elegant manner, that you understand the language and its idiosyncrasies, and that the code you write is good in a team environment. This is what your code sample should show us. If you don’t have something like that lying around, give yourself a relatively small-scope coding challenge (like writing a text-based checkers program or a program that solves a boggle board that’s just an N by M array) and come up with your solution for it in the given language. Review it. Show it to other programmers and ask them to nitpick it. Re-review it, and make sure it is code you can feel proud of.


Got a burning question you want answered?

Little Jeremy Heere headcanons I’ve been thinking of/writing

  • Jeremy has the wORST BRAIN TO MOUTH FILTER EVER (and when him are Michael are dating it KILLS Michael cause he just randomly blurts things and its like ‘dude wtf stop being sexy with what you say’ and Jeremy’s just all ‘I’m noT TRYING??? WTF’ (credit to @groovymutants for Michael’s reaction))
  • The absolute worst at remembering to eat (especially when he’s not feeling great)
  • Asked Michael to prom by getting them matching Player One and Player Two bowties as well as pacman chocolates 
  • Cannot do laundry to save his life he always lets everything pile up 
  • You know this boy has like 10 million star wars shirts and theyre all slightly different 
  • THE BIGGEST LITTLE SPOON YOU WILL EVER MEET 
  • When he first realized he was bi he was all ‘man if i could just date a dude who’s exactly like Michael that would be perfect’ ‘im gay, man’ ‘HOLY FUCK’
  • I feel like this dude would either be a computer science major or go into video game design (either the programming side or the art side I havent decided)
  • Totally stuck with theater bc you know that boy loves it
  • Is EXTREMELY easy to fluster like holy shit that boy goes red in a second 

I might make a part two when I think of more

Find You (Part 1)

Summary: Bucky has moved into a new apartment, not knowing that its previous tenant thinks they still live there. And he’s the only one that can see them. 

Word Count: 1,673

Warnings: Talk of a car accident. Coma.

A/N: This fic has been in my documents, outlined, for the past year and a half. I hope you all enjoy it. It’s one of my favorite plot-lines EVER.

Originally posted by rohgers


The white-washed walls are the only barriers to muffle the woman’s sobs. She folds herself over the body of a young woman, barely in her early twenties and already battling to keep herself alive. The only sign of life in her is the ventilator, pumping artificial breath into her lungs, and the stable beeping of the heart monitor. The doctors hold hope in that she’ll wake up, there seems to be no brain damage, nothing seems to be halting her from waking up. Yet she does not. And the wails continue day in and day out.

Keep reading

Long Angsty Sterek Fics

All at least 20k words long (by request)

Divided We Stand by KouriArashi

Derek is being pressured by his family to pick a mate, and somehow stumbles into a choice that they didn’t expect and aren’t sure they approve of….

By Any Other Name by entanglednow

He doesn’t know his name, he doesn’t know who he is, and neither does the werewolf he’s on the run with. But he’s pretty sure they hunt monsters, because they seem to be really good at it.

Permanent Fixture by linksofmemories

Derek is Scott’s older brother. Stiles is Scott’s best friend. Derek is falling in love with Stiles. This is a bit of a problem.

Mating Habits of the Domesticated North American Werewolf by lielabell

Derek doesn’t do pining. He doesn’t. So when it becomes clear that Stiles is much more interested in having Derek as a new best friend than a boyfriend, he puts on his big boy pants and makes it fucking work. He becomes the best goddamn friend a spastic teenager could ever hope to have.

Don’t Speak by fatale

The Alpha pack has systematically attacked Stiles and his friends for months, testing their strengths and weaknesses. When one of the Alphas goes after Stiles, he awakens in the hospital and realizes that something’s wrong. Very wrong. All sounds seem to hurt him, he can’t understand what anyone is saying, and when he tries to speak, it’s gibberish. How is he supposed to deal with the fact that he’s lost the ability to communicate with his dad and his friends?

Without his ability to talk, his sarcasm, and his wit, what does Stiles even have left? Enter Derek, the only one who seems to make it better.

Enemy Lines by qhuinn (tekla)

This is the story of werewolf Derek Hale and human Stiles Stilinski: two people who grew up in the same town but completely different worlds, their realities split by the war between men and wolves.

Years later when Derek returns to Beacon Hills, he does it as Alpha of a military pack on a mission to capture those responsible for the region’s resistance. With his main objective, Sheriff Stilinski, out of sight, he settles for the next best thing: his son, Stiles.

Neither of them suspects they’ll need to trust each other if they want to make it out this alive.

Keep reading

Project Progress

more progress on my prototype i now have the enemies infinity spawning (not this fast may i add) but i have the scripts in a good place so is the project i just need to define where they spawn and to check if the player is nearby.