GameMaker Studio 2: Weapons statistics, ammo and selection.

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
hello everybody today we're gonna be taking a look at weapon selection and I'm a tracking so you see I've got this friendly little green slime here and you can me job here and pick up this assault rifle because of course he can and I can click to shoot that and we've got a cool little hitscan weapon if I shoot key mojo I'll run out around whoa I've got no ammo but if I everyone pick up this thing this is a plasma gun and it can kind of hold this down fire this it's got a bit more recoil than the other gun and obviously behaved totally differently but if I run out of ammo with that I also can't shoot ok so that's what we're gonna look at like how you can set different kinds of weapon and kind of an effective way and easier managed way in game maker and also track how much ammo you have for any particular weapon and I also allows for the case of just being completely unarmed as you can see in the star here no weapon at all alright so let's get to it so here is our weapon object just with three blank events okay these are what we're gonna create today the create event staff event and the draw event of our weapon it works very similarly if you've been following my platformer series - the weapon we've got going on an air gun that you can kind of aim that moves around independently of the player so if you're following that series you can drop the system I think I've tried this but I'm pretty sure you can drop this system into that game pretty much right away and it'll work pretty much perfectly just off the bat I don't think you really have to change much to get us to work but what we're gonna do so the create event we're going to write the definitions of the different types of weapon that we can have the assault rifle the plasma gun and being unarmed and just do some basic startup stuff and the staff event will do all the kind of like movement of the weapon having it follow the play around and aim where the mouse is aiming and also obviously the shooting if we're able to shoot we've got ammo etc and and the drawer event will obviously just draw the gun and make sure we're drawing the right sprite in the right place etc okay a few other things have already been set up like our a weapon pickup object and child objects of that and I'll show you a bit about how that works towards the end so you can see how to actually make those pickups up here in the room and just importantly as part of demonstrating how to change a weapon on the fly but you'll see more about that as we get to it and a couple of sprites in here are important I guess the the weapon sprites themselves for the pickups and the versions of them that are being held to the ones that actually have the little green hands on them okay but we don't need any of that stuff that's close that works facedown and just reopen a weapon and come to the create event and this is where we'll start okay so I'm going to maximize this first of all in fact I'm gonna right click close that I'll right-click on a weapon here open all event scripts I just so we've got step create and draw up here cuz these things are going to need we'll put them in order like that and just make sure you've got the create tab open here okay this is the first one that we're gonna use so the first thing we want to do is define our different types of weapon now we could do this in lots of different ways in a way I'm gonna do it is to combine an array with some DS maps okay so we're gonna have an array of the ass man don't worry too much we don't know what that means to start with defining the array well first of all defining which weapon we're gonna define first is an arm okay so it's going to be a blank weapon effectively we're gonna write weapons and that's gonna be the name of our array so a list of different weapons open square bracket zero so it's the first entry in the array okay array just being like a list of variables you can already know that and what this is gonna equal is BS on the score map underscore create okay what we're going to put in our very first entry of the array is a DS map now what is the DES map the s map is quite similar to an array in that it also can be thought of as a list of variables but rather than being like in order of integers like this so like having entry 0 entry 1 entry 2 and so on and the order being kind of important and the number of things you've got in it an important it's a bit more arbitrary than that okay you have keys which I'll link to two values and you'll see what I mean by that in a second when we start adding things to this map so I'm gonna what am I gonna put in this map okay well this map is gonna represent all an armed weapon and IDs map and the score add this is to add a value to that map the map I'm adding to is weapons 0 okay entry and the key as you can see down here we want a key and a value the key is gonna be sprite so what sprite we want for this particular weapon and the value is gonna be minus one because it's unarmed we don't actually want any sprite in here okay and you'll see how we use that in a bit but for our assault rifle for example it would be what's the name of that s a gun and the score AR for example would be our assault rifle but we just want this as minus one so you can see how this works we've got keys which note the useful name that we can give to a value so that we can reference it later so we want to know the sprite of weapon zero we can find that and know that it is - once it's different to how a Rays work that there's similar sort of idea so we're gonna add a bunch more stuff to this this DS map now so I'll probably just speed this up just so you can see me having added all things and I'll go over what they all are okay in fact I'm just gonna copy and paste them in because I have them over here so I'm just gonna copy and paste boom these are all the different statistics for this weapon okay same line every time dear son score map on the squad weapon zero comma name of the thing and the value let's go through just all these you know what they're all for okay recoil is gonna be the amount of the gun or weapon or whatever moves backwards a bit when you fire or use it might be might be zero if you don't want that to happen at all recoil push that's like a push back so like how much the actual player moves back due to the recoil if you want now all damage we don't actually use damage but it's there - well in this tutorial and the demo I've set up here don't actually use this but we pull its value in just so you get the idea of like that would obviously be the damage you would deal projectile is the name of the type of projectile you shoot okay so down here I've got a bullet and Oh hit scan for those two different types of gun but I don't need either of these for this one because this is unarmed so it's minus one okay start up would be the length of time in frames for the weapon to start firing length is a special one that's the length of the sprite from origin to the far right okay which I think you could work out doing some math rather than you could probably do like X minus B box right or something that I'll be back right minus X or something like that well we won't work exactly like that but um as you can see here I've just worked out like the origin point being here on the gun and how long it is to there that's to know where to create our bullet okay because we don't want to create a bullet at this position we would want to create it here so we want to know this distance so we can we can adjust for that okay come on - yes cool down would be the length of time in between each shot okay so you don't want to literally create one every single frame or if you do you would set cool down to zero no I would work bullets maybe how fast the bullets won't actually move the hitscan Juan doesn't need this at all obviously unarmed doesn't need it at all and automatic is whether or not you to hold down the button to attack or whether you can or whether you have to depress it every single time you want to shoot okay it's automatic semi-automatic right so unarmed all that mostly tzatzi RISM one so that's uh copying the assault rifle stats okay so underneath they are weapons one this time case exactly the same block of code but this time we've got some cool stats in here okay so there's the sprite is the assault rifle recoil three record push to zero damage one although it doesn't actually do anything just for demonstration purposes Jack tile is our hits can thing start up zero I don't think I want to build fire instantly that's more for if you wanted to do on Nelly weapon using this source system and it would create like an invisible projectile and from a view similar to if you've watched my melee tutorial how that would work I thought the main reason you would probably have a start up on a weapon but I guess some projectile weapons would have start off as well length 24 cool-down three bullets speed zero because it's hit scan and automatic false II have to click every time okay and then let's put the plasma gun and as well so I'm just gonna copy that paste underneath here so weapons - god yeah I mean obviously you can pause this and write all this in at your own pace to her it'll feel like you have to be typing as fast as I'm copying and pasting for obvious reasons so the recalls a bit more damage more the length is the same but there's more of a cool-down in here in the bullets have a speed because because they're actual sort of moving big bullets rather than a instantaneous hit scan okay and automatic is true here so we'll be able to hold down the button and fire okay so once we've added all these so you would just add a block of this for every type of weapon that you want in your game or with all the different statistics for them okay you can also modify these on the fly but I'll show you more about how you can do that sort of thing later next up we want to define what weapon we have right away when this is created well it's gonna be 0 right so I'm gonna type weapon this is singular weapon not weapons just weapon equals 0 okay which means that when we reference one of these stats were referencing weapon number 0 which is going to be this okay or if we changed weapon to 1 or we'd be referencing this enough to this someone okay next stop is ammo okay so in order to track the ammo that we have that's also going to be an array we know how long the array is gonna be by the number of weapons we have because we want a entry in our ammo array for every weapon we have we know that there's three not one two but we might wanna hope be white we might want to add more weapons later so in order to not have to change this value over and over again I'm gonna write in array and just go length 1d weapons close bracket close square bracket equals zero okay so that's going to take a the weapons array which we know is three entries long actually it can be that minus one can't ya because it would be not want to so it'll take entry number two and set it to zero and because of that because we've set entry two to zero it knows and we don't have as their entry zero or one yet it will also initialize those two so we'll get our a zero entry zero is zero and tree one is zero entry two is there okay it's the easiest way to set up a blank array is to set the largest entry to whatever what to zero and that'll set all the other ones to zero as well okay but we don't want all three to be zero I'm gonna set ammo zero the the first entry of the array to be a minus one okay the reason for that is because when we want to be out of ammo zero we don't want to be able to shoot any more the unarmed has no ammo and if you made a what nellie weapon later free I know that wouldn't matter so much it was the difference between an aren't having no ammo and minus one ammo right but by giving it - one ammo and if we made a melee weapon or something like that in the future we're gonna use the value of minus one to make it so that you you could attack anyway so you can attack up minus one but you can't attack at zero and if you attack above zero it reduces by one so it never goes past zero if you have positive ammo I hope that made sense okay basically a way of setting a weapon to have infinite ammo is to say it 2-1 okay and you'll see exactly how that works when we get to the actual shooting pot okay so that's that basically set up and now all we need to do is actually assign one of these weapons because we sell the statistics of these but now we actually need to put one of them into the weapon itself okay so we just have a bunch of dears amounts of stats at the moment we don't know which which ones are actually using and because referencing the S Maps like on the fly can be a little bit slow because they've got to compare these text strings what we're going to do is just swap these out into local arrays when we actually change weapon and then we've got them local and we don't need to look up what it is in the D s map every time okay so I'm gonna get all of these values so I'm gonna type var WP underscore map equals weapons weapon okay so the temporary variable here WP Mount and see it turns yellow means it only lasts to the sake of this create event then we get rid of this variable we don't need anymore just to find the weapon that we currently have selected by what have we said I could put zero in here but just in case you know we want to try out starting with the assault rifle etc we could just change this one value that's going to get the ID of this DS map and then I'm gonna do a recoil well we'll start with sprite I guess since it's our first one sprite equals D s now I'm just go find value okay open bracket WP 8 map comma recoil okay and you might have guessed what this does is it reaches into the the array entry of whatever weapon we have which is 0 finds that key that we set sprite and returns the value opposite and puts that value into sprite okay so sprite will end up equaling minus 1 you might wonder why I've put weapons weapon in a var instead of just say putting it here okay because that would work just the same but by doing it this way we actually have a faster way of writing this line and you'll see what I mean now or in a right sprite equals instead of doing it this way we can write WP underscore map open square bracket question mark space sprite in quotation marks okay this line does the exact same thing as this line okay it's question mark is what's called an accessor okay it's just a easiest way to think of it it's just as a quicker way more as the right now of accessing and changing these rather than having to use a specific DES mount firing value every time and write a specific function you can just write this shorthand and and get it that way but what you can't do is write sprite equals weapons over skyrocket weapon close go bracket open square bracket question mark sprite okay that and that doesn't do anything okay it doesn't work right it seems like it's fine here but you would actually get a compile error if you actually tried to run that it doesn't know how to deal with multiple square brackets in row okay so the only way to get rid of that is to bury the result of the array into a temporary variable okay just to give us a quick way of writing this just to save our fingers some effort more okay I'll leave this sprite one as the basic one so you can kind of see how that works but then I'm just going to do all the rest using the antecessor okay so I'm a night recoil equals WP map recoil if I can type there you go recoil I'm just go uh push and cool WP map just going back a question mark we foil underscore push and you can see where this is going so now I'm just gonna skip ahead and put all the rest of them in so that's all of our statistics copied in um you may have noticed and wondered before I accidentally wrote recoil in here for the sprite instead of sprite I was just being an idiot obviously I want to find the value of sprite for sprite not the value of recall recall goes in recoil obviously okay and I've corrected that now and so that's now set all of these are variables actually local to a weapon to be the values they should be based on whatever weapon we have it quick okay and this block of code here is just exactly what you just need to call every single time yeah I'm sorry including that top one every time you want to change weapon okay so to in order to change weapon now all I would ever need to do is writes a weapon equal to and then run this block of code afterwards okay in fact we could bury this in a script if we wanted to if I might just do that I'm going to go to create script change weapon yeah your argument zero okay so now all we need to do is type change weapon open bracket and then put the nail put the number of weapon that we want to select in and this will do all the rest okay so I can just do that on the bottom here now to change weapon zero okay and that will assign all of those values to be the appropriate values based on weapon zero which is our own armed weapon okay okay there's three more variables and want to set up here the normally I suppose you might do this in the variable definitions window but just to keep things simple and also transferable to game make one point X we'll just do them here that's current CD okay so that's your current cooldown zero because cool-down is the value want to set a thing to not the your cool down your weapon is off a current underscored delay for minus one and burn underscore recoil and you'll see how we use these to sort of create cooldown and a delay between shooing which you've got a start and so on and and I'm recoil for the gun so we can make those sort of bounce between values okay simple stuff so now let's move that's everything that's everything we need in the the create event as I say every time you wanted to find on your weapon just copy this block code and just add some new things to it now let's move on to the step event ok so what do we need to do in here well we need to do some basic stuff just in terms of making the gun follow the player around and point in the right direction and all that kind of thing ok so the basics of that office all x equals Oh player X okay I'm just going to follow our player object around and why it was Oh player dot Y Direction this is an important one is going to equal point underscore direction which returns an angle based on two coordinates our current makes my corner and mouse X and mouse y which returns the coordinate the x-coordinate the y-coordinate of the mouse in the room okay and that will make the gun point toward well it'll make its direction value the angle between where it is and where the mouse is in order to actually make it the this visually point we have to change the image angle which we'll do in a second but first so on type if Direction greater than 90 and Direction less than 270 that means it's pointing somewhere to the left okay I'll put the graphic up you can see how that works image y scale equals minus one okay and that's gonna flip the sprite vertically and just so that it looks correct on either side otherwise it would look but when we rotate the gun around it would look upside down when we were facing to the left okay we're doing it the right way up no matter which way you're facing okay so we can flip it if we're facing light else image y scale equals one okay image angle this is the thing to actually make us rotate visually equals direction so just equals that particular angle and that's all we need to actually make it face the right way and all that effect I think just based on the fact that a weapon has a default sprite fact if I run this now okay won't show anything first of all because I can't draw itself just quickly in the drawer event we ran that yeah you can see it's on the wrong layer and everything at the moment we thought that they'd be concede that the gun is pointing in the right direction no okay let's get rid of that we don't actually want that all in the drawer event so back to the staff event now that's handle actually shooting some stuff so var Mouse B first of all okay this is a variable checking whether or not the mouse button is pressed okay and the reason we're making a temporary variable first is we're gonna either set it to the current state of our mouse button or we're gonna put it to the pressed function which will check to see if it was pressed this frame so it was not pressed last frame but it was pressed this frame which will be the difference between automatic firing and not because we have all those local variables in there now I can just type if automatic can you see that turns blue that's one of our properties so if automatic is true okay we can set mouse be an equal mouse check button and be black otherwise mouse key equals Mouse okay button press and be away okay and that's the difference between those two one checks whether the button is just down and one checks if the button is down but wasn't down the last frame okay so for the noise just been pressed then after that we want to write if Mouse feet okay so if Mouse be return true or not based on that stuff if current CD equals zero which it does at the start turn CD and my typing game is not on today equals cooldown okay so that sets our current CD to be either current cooldown okay and so our weapon starts cooling down or it doesn't quite right away yeah it'll start ticking down from from when the lay also reaches zero and we've actually fired you'll see what I mean current delay equal stop that's the number of frames until the gun actually goes off so I starts as firing and based on whatever I start up is it might be 0 which it is in all of our weapons like I say I put this into the sake of maybe doing Melly weapons later but at uh if it's zero then we'll carry on and instantly shoot a projectile as you'll see in a second but if it's more than that it'll take down until eventually you'll shoot okay so if current delay is zero which it will be in stuff and projectile does not equal minus 1 okay so projectile is minus 1 1 we're unarmed because we don't actually create a projectile or do anything there's no shooting to actually do it but if our projectile is a kind of object than we know we need to actually make one and this sequence okay then what we want to do is check to see if we have any ammo okay so if ammo of the current weapon does not equal zero okay so it's not equal to zero not it's greater than zero or anything like that we have to check specifically that it doesn't equal zero okay because what we want to do is be able to use negative numbers like setting our unknowns to negative one which we've done to qualify as infinite ammo okay and for that to work we need to check to see if ammo is not zero in order to fire so that we quickly a set a weapon to have known as one ammo still be able to shoot but never run out of ammo okay and that gives us infinite ammo just allows us that possibility and so if ammo is not equal to 0 then we can fire with instance create layer X plus right so this is where we're actually going to create our projectile so we know that there is a projectile type to make where do we actually want to make it well we want to make it not quite at just x and y which is where the gun is but we want to do it x and y plus that length of value that we decided earlier okay so for AR I think because the origin is at 9 and the width is 32 32 minus 9 is like 23 I think I said 224 though the length just so it'd be like right just over the edge so like if we did it at X&Y bullet would appear here but we don't want it to appear that we want to hear here okay so we know how far we want to shunt it from that position but how do we do that just with an x and y well we used length 2 x okay so X plus length the underscore X which we provide a length which is length the length of our gun and a direction which is direction the direction we're facing so that will shunt the amount of X it needs to a liar Hotel move it by the amount weight needs to on the x axis to move that length in that direction okay so if we were a sharp angle like downwards and diagonally it might move it a bit less than it would move it if our angle is this way for example we do the same thing with the Y component okay so y plus like this is gonna be quite a long line y open bracket pulling direction okay and then the layer ID or name is projectiles I've already made a layer you can make one yourself just in the room projectiles layer that's just above everything at the moment you can do that however you want to do your particular depth sorting really what this tutorials about let's close that but that's the layer I'm gonna make it on and the object that we want to make is projectile what whatever object we happen to be storing in there okay close bracket then this is a with statement so open more blocks so what do we want to do with this bullet that we just made well we want to set its direction to be the direction of our gun so direction equal or the dart direction and we want to set its speed to equal other dark bullets speed okay so it gets the bullet speed that we have buried in this object and the direction that we have in this object okay and applies them to bullet that we've just created then we want to subtract one from our ammo ammo weapon - equal one okay so if our ammo was one it would go to zero and then we won't be able to shoot any more but if it's minus one we'd still be able to shoot because - one does not equal zero and we just keep going down below minus 1 to minus infinity um and it doesn't matter because as long as we're not zero we can still fire so that's how infinite ammo works okie doke that's everything we need that I think I've missed a bracket and here yeah just right at the end that's wanting this out when doing with statements make sure you got the right brackets in but gaming will tell you if you have them okay so that's made our bullet and that's reduced our ammo appropriately okay regardless of whether or not we've done that though we're going to apply our recoil so with O player but just sort of then just to give you the effect of that recoil to kind of make it clear that you're out of ammo and it's not that just the game stopped working or whatever so the gun will still move a bit as if you're trying the shooter but nothing will actually come out I just mimic in real life the action of shooting a gun even though I've learned and the recoil even though there's no webcam or anything on the go in this oh well I imagine I did that HSP minus equal length the underscore X other dot recoil underscore push of the dart Direction okay so if you're familiar with my other tutorials I tend to use HSB and BSP doing movement speeds and those directions you might be using V speed and H speed or whatever you want but this is what I'm doing to just apply a little bit of speed to our player in the direction that we good jobs okay assuming that we have some recoil push that might be set to zero and current recoil is also going to need for recoil because in theory we've just shot okay our delay zero projectile on is not minus one then we've just fired set our recoil to view or whatever the hell it needs to be okay after that rather there's not a whole lot left to do in the staff event current delay equals max for whichever is bigger minus 1 or current delay minus 1 okay because we know when we read 0 the gun goes off and we shoot so we want to go beyond 0 to make sure we don't keep shooting after currently reaches 0 so we subtract 1 from it every frame until it hits minus 1 and then we sit at minus 1 so if it's above minus 1 it means it's ticking its way down to 0 if it's 0 we fire on that frame if it's minus 1 we're not shooting ok and then if current delay is minus 1 so we're not currently shooting current cooldown can start we can then start to take down our cooldown which is the gap in between the next time we're allowed to start shooting again ok equals max 0 for this one turn CD minus 1 bracket semicolon already and then the last thing we need to do is reduce our recoil every frame so that approaches 0 again ok so current recoil equals max whichever is biggest 0 or or current recoil times not pointing so we're just going to more apply current recoil by not point 8 every frame until it's less than 1 because when it's less than 1 flooring it will set it to be 0 okay so I make sure we get all the way to 0 but if it was say 3 I don't know what 3 times not 0.8 is like to point something 3 will turn to 2 and then do other than once that one yeah okay and that reduces our recoil which doesn't actually have any effect yet but we'll show you how the recoil has an effect in a second death last of all just to make the gun actually show up in front of the player as you noticed it didn't before equals Oh player dot that minus 1 the player I'm using just a depth equals negative Y thing nor the position in front of stuff on the screen just a very basic is that ordering kind of thing and that's all we need for the stat the done and then the draw event last of all and then we can actually see this all working after this so we're almost there if sprites does not equal minus one so assuming that we've got something we want to draw a weapon of some kind okay draw sprite ext now this would be an absurdly long line if I were to do this function all on one line you may have seen me do this before but you don't actually need to do a function or on warm line you can actually split it up over several lines which is what I'm going to do now so I've opened the bracket so I'm in the function declaring these things at the bottom sprites of image etc I can do this all across multiple lines the first thing I need is two sprite while the sprite is sprite only know the sub image the frame that we're on is going to depend on the image index oh no this particular object as it animates x and y are going to be special ones here so X minus point the X Open bracket current recoil comma direction okay so it's gonna take X and it's gonna reduce our x-coordinate by the amount of X that we would have to move to move our current recoil in a given direction okay bye - it means we go in the opposite way what we could do is say plus direct from minus 180 so it goes 180 degrees the opposite way but I just find it just feels more elegant to me as I'll probably just cuz it's shorter as a line to write it lie down it's not semicolon at the end sorry it's a comma because you're in the function here so that's the x-coordinate okay and the y corner is just the same y link - length Y is fine current from the score recoil direction come on mistake to make one you're doing length directs and links theoi make sure you actually do do x and y very common to do that it's a difficult error to spot sometimes and when things are just and you just get things facing completely the wrong direction so make sure you get that right image underscore X scale image underscore Y scale again just filling these in because X ago and watch girl give me whatever we need them to be the reason we're not just using draw sprite and using drops by txt is so that it takes these into account otherwise it doesn't okay rotation is image and don't once we already know an image blend or not that it matters particularly is the color blend and an image alpha well the alpha or though I suppose we could have equally just written one but in case you want to manipulate your image alpha we put it in okay and that is oh no sorry and then close the bracket at the end there okay so that's it's exactly the same as writing it all in one line just makes it a bit easier to read than how insane look like how long would this even be yeah you can see it gets pretty massive for to school to be on one line so that's but you don't have to you can just keep it all separate like that now if I run the game this should be absolutely everything so we've got no gun at the moment when we start off because we know we're setting weapon to zero so I should take a look before I show you in the game uh-oh weapon pickup does when we collide with the player does exactly what I said before okay it checks it opens the weapon object and it just sets all these stats appropriately now I don't actually need to do it this way anymore cuz I wrote this script to change weapon denied so what I can do and say let's change weapon to a with statement no it doesn't okay so in here I can just say change weapon still with Oh weapon here but change weapon to be whatever weapon is in a pickup because I just have this as a parent objects weapon set to one to weapon okay and ammo weapon plus equal 20 so just add 20 ammo to the weapon that we happen to have selected okay because you could do this by any means you could press lightly and if you didn't want to do it by picking up a weapon or you wanted to add like being all to swap between weapons on the fly with like number burns you could say in a player if pressing the two key change weapon with a weapon change weapon to okay that's the the simplest way to just change of weapon so you see you just so that's weapon to be whatever you pass into the script and then calls all those values out appropriately okay and then just afterwards we'll give ourselves some ammo so that we actually have something to play with and then destroys the pickup itself and this object here is just a child object OWP plasma it's just inherits everything literally just a child object of plasma with nothing different other than variable definitions I've got weapon set to two instead of one - take though one thing I did wrong here I wrote change weapon weapon should be good don't weapon okay and then once we've done that because obvious is with weapons so you want to get the weapons in the pickup not the weapon from weapon otherwise you change weapon to itself which is obviously no good but then I can walk over this alright we'll pick it up we've got our assault rifle which is non automatic so we have to click for and that's about 20 ammo so it runs out pretty quickly we're gonna dent it slap hit scan projectile I can pick this up and hold it down or click if I want to to shoe these plasma things until I've shot 20 of them and there are more obama okay so you have it that's basic weapon selection system and basic setup for managing different kinds of weapons Lazarus he can do basically any kind of weapon with this you can do melee weapons do anything anything you can imagine really and if you want to add more properties or more behaviors to your weapons the best way to do it is to add a new property for and manage the way the weapon works based on that property and then that allows you to mix and match and make lots of new cool interesting and unique weapons so I hope you enjoyed that guys and I'll catch you guys next time thanks for watching these last few weeks I've seen a lot of increased support for my patreon and as a result we've hit our new milestone of $1000 and in order to celebrate I'm removing all amps from this video this video is just completely ad free and always will be thank you very very much to everyone who supports me on patreon thank you in particular and in no particular order to go on Van Daan in a mule andreas to back ryan Cenacle Charles Montgomery Harold Guidry Nathaniel Walsh Lewis are pereira nick slavish stephen Hagen jason macmillan jonathan crispy oh and morgan and boughs of the dog thank you all very very much for your continued support super excited now that we've hit a milestone that more or less I was mean to keep making these videos for as the for the foreseeable future which is pretty awesome if you want to see these videos all be ad free um the next milestone isn't that far off of isn't far off of this one I'll nearly need another five hundred dollars to make that happen you can do that by popping over to patreon calm or slash Shawn Jonas and given me a couple of dollars on there every month you get your name in the credits and a bunch of other cool stuff okay thanks for watching glad you enjoyed this I hope you enjoyed this and if you did that I'm glad and I'll catch you guys next time thanks for watching ever
Info
Channel: Shaun Spalding
Views: 61,995
Rating: undefined out of 5
Keywords: Game Maker (Video Game Engine), Tutorial, GameMaker Tutorial, GameMaker, Game Development, Indie Games, Tutorial Series, Game Maker Studio, Making Games, How to make games, GameMaker Studio 2, GMS, GMS2, Weapon, Ammo, Weapon selection, Weapon cycling
Id: 2l9drqMlE6s
Channel Id: undefined
Length: 40min 19sec (2419 seconds)
Published: Fri Jan 26 2018
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.