Circuit Rescue Gameplay Trailer
1:58
Пікірлер
@CodingTube
@CodingTube Күн бұрын
Waiting for the videos, thank you!
@SamirKhairati-xu7pm
@SamirKhairati-xu7pm Күн бұрын
Would it be alright to use a dedicated state management solution like Redux or Zustand?
@tejasvakhandelwal9951
@tejasvakhandelwal9951 2 күн бұрын
This took me some time to understand but in the end I figured it out :)
@SamirKhairati-xu7pm
@SamirKhairati-xu7pm 3 күн бұрын
Will you be making the 'possible future content' ?
@swestover
@swestover 2 күн бұрын
If there is enough interest in those topics for the game, and if the series keeps getting interest I plan to add that content. Right now, that content is on my road map, but there is no firm dates tied to it, and sometimes new content is added that was originally included, like being able to catch monsters. Is there a particular topic from that list you are more interested in than the others, or is there any other features you were hoping to see?
@SamirKhairati-xu7pm
@SamirKhairati-xu7pm 2 күн бұрын
​@@swestover Firstly thanks for covering so many things so far, you've made the best phaser tutorial series out there. I was particularly interested in cutscenes. I feel like it involves a different set of concepts, like camera movement, reusable event components system. I was also interested in map connections and seamless transitions to outside maps. Say there's a pathway between pallet town and route 1, there's a connection, you're going from one map to a different but it feels like it's just one. And the map can be different sizes as well.
@pintour3
@pintour3 4 күн бұрын
Thanks
@tejasvakhandelwal9951
@tejasvakhandelwal9951 5 күн бұрын
Really really getting a good knowledge of phaser3 as well as the how to actually code properly. Thanks a lot :)
@swestover
@swestover 2 күн бұрын
Glad to hear that!
@RenanWRS
@RenanWRS 5 күн бұрын
Great tutorial! I'm following along using Vite and TypeScript, and the JSDocs have been very helpful. One question though: instead of using this.container.setAlpha to control the container's visibility, couldn't we use the boolean this.container.visible and return this variable in the get isVisible method? Would this alternative have any drawbacks, such as interfering with animations?
@swestover
@swestover 2 күн бұрын
Thanks for the kind words. Yes! We could definitely use the built in visible property of the container instead of setting the alpha directly, and this make sense since we are placing all of our game objects for the ui component in the Phaser Container. In theory, this should not have any drawbacks or interfere with anything else we are doing in the game. When we set the alpha to 0, or set the visible variable to false, Phaser uses similar logic internally for handling the object. Thanks for the great suggestion and feedback.
@tejasvakhandelwal9951
@tejasvakhandelwal9951 6 күн бұрын
Really grateful for you to make this tutorial
@tejasvakhandelwal9951
@tejasvakhandelwal9951 8 күн бұрын
Really needed this course, Thank you so much
@swestover
@swestover 8 күн бұрын
Thanks!
@tejasvakhandelwal9951
@tejasvakhandelwal9951 8 күн бұрын
Really excite to start learning, looks fun
@swestover
@swestover 8 күн бұрын
Hope you enjoy the series!
@pavloburyanov5842
@pavloburyanov5842 8 күн бұрын
The real JSON-driven development)
@pavloburyanov5842
@pavloburyanov5842 8 күн бұрын
Or you can use ZenMode
@swestover
@swestover 8 күн бұрын
Here is a link to a more detailed video: kzbin.info/www/bejne/mYPMameHg6lngbcsi=OF4MubUFSCNiDZ6Y
@pavloburyanov5842
@pavloburyanov5842 8 күн бұрын
Its always great to have multiple ways to do things. But I like to define "keys" as enums in one place which prevents any typos in future. To make thing simpler I defined a couple of private methods to load different stuff, for example: private loadAnimation(key: string, assetKey: string, frames: number[], rate = 10, repeat = -1) { this.anims.create({ key, repeat, frameRate: rate, frames: this.anims.generateFrameNames(assetKey, { frames }), }); return this; }
@swestover
@swestover 8 күн бұрын
Thanks for sharing the example. Yeah, it is always nice when there are multiple ways to approach the problem, and I really like the enum approach when we need to reference the same key in multiple locations. Makes it really easy to refactor later as well....
@pavloburyanov5842
@pavloburyanov5842 8 күн бұрын
@@swestover Additionally Im thinking about small loader wrapper to have nice integration with TS type system. Because currently when you're accessing json from .cache it has type 'any'. I wondering how to deal with it in elegant and not overcomplicated way.
@kevinka99
@kevinka99 8 күн бұрын
Interesting but I dont see much benefit of this use because we lose a lot of animation helper methods like generate frame number and names. by creating a json with an array with the information you need and loop it should be better
@swestover
@swestover 8 күн бұрын
I definitely agree with you that with this approach here we do lose access to the helper methods, which puts more burden on the dev if you do this manually like I did in the video. I think were this approach really shines is if you combine this with some other type of tooling, like if we have a UI that can be used for creating and testing the animations, and when you export out the JSON, it would be the completed JSON configuration that is needed.
@pavloburyanov5842
@pavloburyanov5842 8 күн бұрын
@@kevinka99 It may help to build one-scene small game very quickly. Also you can 'pack' your assets with JSON to reuse later.
@DongHan-ty3ck
@DongHan-ty3ck 8 күн бұрын
Can players walk anywhere they want, except up, DOWN, LEFT and RIGHT
@swestover
@swestover 2 күн бұрын
For the movement in the game, we limit the player to those four directions and we check for collisions between the player and various objects in our scene in order to limit were the player can move in the game. If you have any other questions, please let me know.
@RenanWRS
@RenanWRS 8 күн бұрын
Great tutorial! I was wondering if those callbacks could be replaced by Promises using async/await? Would this be a recommended practice in Phaser projects?
@swestover
@swestover 8 күн бұрын
Thanks! Yes, we can definitely replace the Promises with async/await, and this is something we start doing later in the series. As for if it is recommended practice in other Phaser projects, it really depends on where you implementing the code, since by default the Phaser Scene lifecycle events will not wait for the promises to complete before moving on in the code. A good example is if you are trying to use async code in the `preload` method of your Scene. In order for you to fully await the code to be finished before transitioning to the `create` method, you will need to do some custom work. However, in these examples here were we are just reacting to things and expecting a chain to be followed, these would be great candidates for using async/await.
@RenanWRS
@RenanWRS 8 күн бұрын
@@swestover Thanks for the detailed explanation! It's great to hear that async/await is being introduced later in the series, I'll definitely keep following along.
@Thr111ce
@Thr111ce 8 күн бұрын
thank you for these man, theyre great
@swestover
@swestover 8 күн бұрын
Thanks for the kind words!
@terrancrypt
@terrancrypt 9 күн бұрын
i still watching your videos, sir
@swestover
@swestover 8 күн бұрын
Happy to hear that!
@cjwestover4527
@cjwestover4527 9 күн бұрын
Fantastic as always!!
@TylerMarshall0007
@TylerMarshall0007 14 күн бұрын
why cant i comment :/
@swestover
@swestover 13 күн бұрын
Sorry to hear you having trouble with comments again....
@TylerMarshall0007
@TylerMarshall0007 13 күн бұрын
@@swestover i think its because i used certain words youtube thought i was advertising. i was talking about some work i did on my channel that was relevent to porting to mobile in phaser 3.
@UnderArea51
@UnderArea51 14 күн бұрын
@cui.cui.
@cui.cui. 14 күн бұрын
Curious if you're planning to tackle the deployment part a phaser game? Like deploy on mobile (ios or android or both?) but there aren't that many resources about that out there.
@TylerMarshall0007
@TylerMarshall0007 14 күн бұрын
trying to reply again. the game is made in javascript so it can run on any browser including mobile. the tricky part is adding controls
@cui.cui.
@cui.cui. 14 күн бұрын
@@TylerMarshall0007 hey, yes I know it can run on a mobile browser, but i'm more interested in getting it to run as a standalone app (which will probably be a webview wrapped in an app). I think Vampire Survivor uses Phaser. So some successful games are actually running on Phaser. I've heard stuff about Cordova etc, but there doesn't seem to be a definitive way of doing it.
@swestover
@swestover 13 күн бұрын
Thanks for the additional details on what you looking for. At the moment I don't have anything lined up for this topic, but I can add it to my list of possible topics to cover. I know that some of the resources I have seen on how to achieve this are outdated, and may not work the same anymore. It would definitely be an interesting topic though...
@cui.cui.
@cui.cui. 14 күн бұрын
This is gold! thanks for doing this series! so helpful!
@swestover
@swestover 13 күн бұрын
Thanks!
@swestover
@swestover 14 күн бұрын
For those interested, here is a link to a video that covers this topic in more detail: kzbin.info/www/bejne/Y4bKpn19lq93eJI
@rgclube6672
@rgclube6672 15 күн бұрын
Quite useful😊
@unclechris
@unclechris 15 күн бұрын
I have my assets (including this json file) in ./assets but they are not respecting the "path": "./assets" in the json file and 404's the images. If I prepend "./assets/someimage.jpg" to the "url": in the actual data, they load. Never mind, I had the "path" positioned incorrectly within the JSON file.
@cjwestover4527
@cjwestover4527 16 күн бұрын
Very cool! Not just that we have the same lasr name; but the video too!
@saidesteban9057
@saidesteban9057 19 күн бұрын
I have been developing a game for almost a month, which despite not having many elements, had a disgusting lag and the textures broke from time to time, I had to watch this video and see that in the configuration it says 'type: Phaser. CANVAS' thank you very much
@deltagamma1442
@deltagamma1442 19 күн бұрын
The built in methods for game objects is such a time saver!
@yousufjr.8496
@yousufjr.8496 20 күн бұрын
Hey Scott is there a way to reach out to you I really need some help , I am making a similar game for my major project
@swestover
@swestover 19 күн бұрын
Hi there. Here are a few different ways that you can reach me directly: Linkedin: www.linkedin.com/in/scott-westover-77393a97/ GitHub Discussions: github.com/orgs/devshareacademy/discussions Phaser Forum: phaser.discourse.group/u/scottwestover/summary
@yousufjr.8496
@yousufjr.8496 19 күн бұрын
@@swestover thank you
@yousufjr.8496
@yousufjr.8496 18 күн бұрын
@@swestover I have sent you connection request on LinkedIn
@rgclube6672
@rgclube6672 22 күн бұрын
Hey, your voice is so soothing, just what I need at 4 am when I don't understand how to create a simple ui using phaser :_)
@DongHan-ty3ck
@DongHan-ty3ck 22 күн бұрын
Nice!
@kevinka99
@kevinka99 23 күн бұрын
I cannot thank you every video but you're a Phaser hero
@UnderArea51
@UnderArea51 26 күн бұрын
AWESOMENESS!!!
@swestover
@swestover 26 күн бұрын
Thanks!
@kevinka99
@kevinka99 27 күн бұрын
to be honest I didnt like too much JSDocs on tutorials video It polutes too much code, isnt the same typescript you defined types and interfaces outside the scope but jsdocs is above the variable and methods it makes hard to follow the implemention and know where you are at the code since theres a lot of commentary over there
@swestover
@swestover 26 күн бұрын
Thanks for taking the time to leave a comment and for the feedback. I will keep this in mind for future videos!
@tejasvakhandelwal9951
@tejasvakhandelwal9951 4 күн бұрын
@@swestover For me I didn't had the knowledge of the JSDocs so it was a good tutorial for letting me know more about the tools used in development.
@Ice-uw8vd
@Ice-uw8vd 29 күн бұрын
Could you help me with something? I've been working on a basic snake game and I've recently introduced swipe gestures. However, I've encountered a problem: the swipe gestures are only detected within the game canvas itself. I have an idea of centering the game on the screen and surrounding it with UI elements that take up the remaining space. That way I could apply the swipe detection to both the game and UI elements surrounding the game, and I could add features like a score being displayed during gameplay. So, I'd have the main scene contain a UI element that wraps around the game itself. I just have no idea how I can implement that. Thank you in advance!
@swestover
@swestover 26 күн бұрын
For the pointer events in Phaser, these are built off of the built in browser Pointer events, and so one idea is you could target the HTML document itself instead of using the Phaser Scene event for the pointer down, which is just listening for the event on the HTML Canvas element. By switching to the document body, this will let you listen for the event on the whole page if you document body takes up the whole page. As an example, in the `setupEvents` method, if you replace the code for creating the event listeners with: ``` document.addEventListener(Phaser.Input.Events.POINTER_DOWN, (/** @type {PointerEvent} */ pointer) => { console.log(pointer.x, pointer.y); this.#handlePointerDown(pointer); }); document.addEventListener(Phaser.Input.Events.POINTER_UP, (/** @type {PointerEvent} */ pointer) => { console.log(pointer.x, pointer.y); this.#handlePointerUp(pointer); }); ``` This will give you the browser Pointer object, which has the x and y position of were the click took place. Since this is the raw Pointer object instead of the Phaser Pointer object, you will need to handle the object a little bit differently. For example, you will need to switch: ``` this.#lastPointerDownLocation = pointer.position.clone(); ``` to be: ``` this.#lastPointerDownLocation = new Phaser.Math.Vector2(pointer.x, pointer.y); ``` Besides those changes, the main logic discussed in the video should still work. Hope this helps.
@Ice-uw8vd
@Ice-uw8vd 26 күн бұрын
@@swestover Thank you very much!
@DongHan-ty3ck
@DongHan-ty3ck 29 күн бұрын
hi bro ! my phaser is "version": "3.80.1", if dont setMask, reatShape need set color to see the react. hope can help other people~
@kevinka99
@kevinka99 Ай бұрын
the magic of your tutorials is cause you go deep into the explanation!
@swestover
@swestover 29 күн бұрын
Thanks for the kind words!
@kevinka99
@kevinka99 Ай бұрын
hey dude, I'm also in a begin lesson of yours and Im enjoy it so much. really thank you, you're making me so excited with Phaser, Ive tried it while ago but documentation are so bad and tutorials none of them got my attention you are making something Im wishing to do and thats so amazing cuz Ill have really a good step by step to follow along with me also you seems be a such a good developer!
@swestover
@swestover 29 күн бұрын
Thank you so much, and I am glad to hear you are enjoying the series!
@UnderArea51
@UnderArea51 Ай бұрын
🎉 Mult Monsters!
@Adam-vm6tc
@Adam-vm6tc Ай бұрын
Hey Scott, I'm on lesson 11 of this tutorial, and I just wanted to thank you for sharing your knowledge (for free!) with us. I'm really enjoying it and I can't wait to apply it to my own games. You sir are a beast and a prince among men!
@swestover
@swestover 29 күн бұрын
Thank you so much for the kind words!
@Ice-uw8vd
@Ice-uw8vd Ай бұрын
Thank you so much for this video!I really appreciate that you also give some explanation about the math that goes into this script.
@swestover
@swestover 29 күн бұрын
Glad it was helpful!
@q16solver
@q16solver Ай бұрын
Great content! I was thinking about some of the features that modern games have now with things like minimaps and teleport portal points, and was wondering if it was possible to implement it in phaser. For teleporting, it would be simple enough to just add a teleport object in tiled and have an interaction that connects to all the other unlocked portal teleport points, but I have no idea how minimaps work here, like perhaps we need to draw a circle and map different tiles to different square colors and draw it out and have the player as some sort of cursor? Not sure if there is some standard here in the gaming industry, it would be great if we can cover it in the tutorial in the future, thanks as always for the tutorials!
@swestover
@swestover Ай бұрын
For the teleporting, I think that approach would work well, and it makes it easy to work connect the various points. For the minimap, I guess this would depend on the type of minimap you want to show and what is important to show on the map. For example, if we wanted to re-create a minimap like in the game Defender, we could do something like add another camera to the Phaser Scene and just modify the zoom level there. Example screenshot of the game: upload.wikimedia.org/wikipedia/en/4/43/Defender_Gameplay_Screen.jpg I will definitely keep this topic in mind for future content!
@q16solver
@q16solver Ай бұрын
@@swestover Yeah, I was thinking something more like how v-rising does it (mainly because I was recently playing it haha), almost like some kind of compass, I did find some guides on phaser 2 that maps tiles to square tiles and draws it, so maybe it is possible
@DongHan-ty3ck
@DongHan-ty3ck Ай бұрын
why my animation will freeze for a while
@swestover
@swestover Ай бұрын
By chance, would you be able to share an example of the freezing issue you are seeing? One thing to check would be the frame rate of the game when you are seeing the issue. If there is a very low FPS, this could cause issues with the animations. If you are using Chrome, the developer tools have a built in FPS meter that will display the current value.
@DongHan-ty3ck
@DongHan-ty3ck Ай бұрын
@@swestover thanks ! low FPS is anwser
@DongHan-ty3ck
@DongHan-ty3ck Ай бұрын
@@swestover and i find When I type spaces quickly, the displayed text overlaps. Will this problem be fixed later in the video?
@swestover
@swestover 29 күн бұрын
Yes, that bug should get fixed in later videos. We end up refactoring some of the logic between the battle menu and battle states a few times as we add new features to the game.
@DongHan-ty3ck
@DongHan-ty3ck 29 күн бұрын
@@swestover thanks!
@DongHan-ty3ck
@DongHan-ty3ck Ай бұрын
nice! i use less event loop in my work, but the stateMachine make me learn a lot! this.time.delaycall is macrotask , right?
@swestover
@swestover Ай бұрын
Yes, that is correct.
@gamedevshrimp7489
@gamedevshrimp7489 Ай бұрын
Hello sir! thanks for the tutorial but I can't use your example project because an error 'Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of "video/mp2t". Strict MIME type checking is enforced for module scripts per HTML spec.' I'm not a skilled developer so I can't resolve it by myself, can you help to fix it?
@swestover
@swestover Ай бұрын
Can you please share more details on how you are trying to run the project locally? For that error, it sounds like the project is trying run the TypeScript files directly, but would need more details to confirm.
@djangoworldwide7925
@djangoworldwide7925 Ай бұрын
This is such an amazing series
@swestover
@swestover Ай бұрын
Thanks!
@CodingTube
@CodingTube Ай бұрын
Keep it going!