Custom 2D Game Engine Devlog 2
27:36
The Beginning
9:09
10 ай бұрын
Tanks2023 Intro
10:36
Жыл бұрын
My Tank Battle Game Goes LIVE!!!
10:03
How to render shapes with Java
24:05
Пікірлер
@iamadev72
@iamadev72 16 күн бұрын
Awesome!
@SunJaycy
@SunJaycy 17 күн бұрын
what a wholesome channel. subbed
@Gianxx235
@Gianxx235 Ай бұрын
Hello i have a problem my wheel colliders are sinking in plane mesh please help box collider is working on car body but wheel collider not working
@zeiphon
@zeiphon Ай бұрын
If you're already doing this at your age, you definitely have a bright future!
@JordanGrantDev
@JordanGrantDev Ай бұрын
Thanks so much! World domination through code! 😂
@messengercreator
@messengercreator Ай бұрын
can u try FLX visual programming pls
@JordanGrantDev
@JordanGrantDev Ай бұрын
Hi, thanks for the comment at the moment I don't use visual programming or android, but I might take a look in the future.
@shaps
@shaps 2 ай бұрын
Love the intro! One important reason some games may not be able to use an ECS is architecture. For example let’s say the game engine and its code itself are not designed in a modular fashion (not uncommon historically) then using an ECS might be tricky. ECS is essentially composition over inheritance (similar to protocols, value types and extensions in swift vs classes) Also there are some teams that honestly don’t feel composition is better than inheritance. I guess it’s some what subjective. Also wanted to give you some advice for your current work. Swift-testing is much better than XCTest. It’s also cross platform (windows/linux) and  is slowly replacing XC. The latest betas even include built in support for it 👍 you’ll thank me. Similarly you might want to checkout SwiftLog from  too. Both are open source. Or OSLog which is built in and more iOS/macos specific. They’re designed for high performance and more modern so you’ll really enjoy them. As a professional I can tell you XC at this point isn’t worth learning. Lastly I see you’re using a lot of singletons. And without thread locks. I’d personally avoid that and you’ll struggle to find those patterns in modern swift libs overall. Checkout modern concurrency APIs like actors, async/await (even if you don’t want to introduce concurrency yet). Actors for one have no race conditions and synchronise state access by default. You’re doing great but hopefully some of these tips send you a stronger direction. Hope that’s ok. My son is only 7 but we watched some of this one together. Keep it up!
@shaps
@shaps 2 ай бұрын
Just wanted to add some clarification regarding how to avoid singletons. It’s not that hard and actually I haven’t written one in years. Specific approach will vary but here’s some wisdom that’ll lead you to ask the right questions. “Who should own this instance?” “What’s is its lifecycle?” So in the context of a loop in a game engine, the answers might be: The engine lifecycle should be bound to the loop. Therefore I’d hold that reference on the engine (vs a singleton) and that way I can easily control its lifecycle (ie it’ll die with the engine). IF you MUST used a global reference try and use `let` vs var so it’s at least immutable. Similarly ensure its internal state is ideally immutable (read only). This can be useful for things like “I need to access the current date Date.now” It’s not really a singleton but I have global access. Hope that’s clearer if not I’m sure you’ll work it out. But it’s a fairly important design to avoid particular in swift. A lot of uni students come out having learned Java or similar where singletons are used more heavily and they make this mistake for a long time. Difficult to unlearn. Best to avoid 😉
@JordanGrantDev
@JordanGrantDev 2 ай бұрын
Q: One important reason some games may not be able to use an ECS is architecture. For example let’s say the game engine and its code itself are not designed in a modular fashion (not uncommon historically) then using an ECS might be tricky. A: Yes it is pretty much impossible to convert a tightly wound and inheritance heavy project especially when it gets big, to modular design. For my first game engine (I never made any videos on it) it was tall inheritance and was a pain to make anything in it and was very unscalable, and ECS is very scalable and coming from Unity which is heavily into Component Based Design and Dots which used ECS which worked very well for unity so it came organically to me to use ECS in Swifty and so-far-so-good. Q: Swift-testing is much better than XCTest. It’s also cross platform (windows/linux) and is slowly replacing XC. The latest betas even include built in support for it A: I didn't even know of Swift-Testing and I only recently started using XCTest but I will definitely try it and will be updating Swifty Core soon. Q: Similarly you might want to checkout SwiftLog from too. Both are open source. Or OSLog which is built in and more iOS/macos specific. A: I Currently use os.log in Swifty Core for all error messages to get coloured messages for errors and I don't need to worry about cross platform support I plan to make this macOS only for simplicity's sake, but thank you for making me aware of alternatives Q: Lastly I see you’re using a lot of singletons. And without thread locks. I’d personally avoid that and you’ll struggle to find those patterns in modern swift libs overall. A: I will definitely be taking some of the points on singletons to mind although I made it a singleton for very easy access from wherever the code is which is a lot easier for me. And the engine is big enough that a big change like that could be very game breaking, but I will change the static instances to let not var. And I currently have no multithreading yet. I have not even thought about async multithreading and it very much complicates things but in future I will definitely be starting going async for speed, but I am already having difficulty handling timing that is the main reason I made Swifty Core but if I start trying to figure out timing on multiple threads I am worried it will complicate things even further. Thank you so much for your advice! I recommend Blender to your son when he’s ready. I started using Blender for modeling when I was 8, and it was a great introduction to Unity, programming, and 3D concepts. Learning about vertices, edges, materials, texture painting, and UV mapping in Blender really helped me grasp the fundamentals of 3D space.
@shaps
@shaps 2 ай бұрын
Hey guys! Really love seeing you and your dad in these videos. I’m a dad with 2 boys myself and also a veteran developer and it’s lovely to see the relationship you guys have. I’ve actually worked on Xcode, playgrounds and other tools for . Many many open source projects (including the swift language), client products and approaching 40 years of developing (started when I was 6) Yet I have to say I’ve never done game dev and you have massively inspired me to get started. I’m also gonna work on a game engine to learn how they work deeply, calling it Chronicle. I will eventually open source it but it’s early days. I’m also starting with  + windows support but it’s 100% Swift. Anyway thank you for re-inspiring my lifelong love of writing code and creating things. Best of luck with your own engine! Side note: GPT is great for productivity, as a professional developer I can tell you it’s used every day in small pieces. But you’re right that it gets things wrong. Over time you just get better at asking smaller questions. It’s a very iterative process, much like dev itself. Also most pros don’t use stack overflow because it’s equally full of bad information. It’s a necessary evil I guess when you’re first learning but just be careful not to over trust the information as it’s generally stuff worth forgetting. Anyway take that advice with a grain of salt. Keep up the great work! (Both of you)
@JordanGrantDev
@JordanGrantDev 2 ай бұрын
Wow thats awesome thanks for the great feedback! The goal of the channel is to inspire, create joy and teach at the same time (hopefully 😂) and fooling around at the same time, all the best with Chronicle.
@errant_egg
@errant_egg 2 ай бұрын
audio a bit quiet. love these videos. a follow up vid on adapting the engine to support isometric graphics would be really interesting
@JordanGrantDev
@JordanGrantDev 2 ай бұрын
Thanks for the feedback, I will try make the audio a bit louder in future, and yes the plan always was to add a isometric tile map system, so expect that in a future update!
@errant_egg
@errant_egg 2 ай бұрын
@@JordanGrantDev thank you for the reply! Do you have any goals in terms of platforms you’d like to support with your engine?
@JordanGrantDev
@JordanGrantDev 2 ай бұрын
@@errant_eggIOS, MacOS, and TvOS, But for now I will be focusing mainly on MacOS for simplicity's sake. Thanks for the question
@takikirouani9123
@takikirouani9123 2 ай бұрын
smart girl
@JordanGrantDev
@JordanGrantDev 2 ай бұрын
Your right on the first part 🤣
@Patrick33456
@Patrick33456 2 ай бұрын
Wish I started that young, very cool! Best of luck!
@JordanGrantDev
@JordanGrantDev 2 ай бұрын
Thanks Patrick, I just told my father that I should have started 2 years ago, LOL but it was more that likely that I was still dribbling back then : )
@gingkoburi8344
@gingkoburi8344 2 ай бұрын
Nice tutorial! Could you make a shooter game using SpriteKit? Thanks in advance!
@luthecoder
@luthecoder 2 ай бұрын
I heard totsiens at the end of the video I presume you guys are also in South Africa!!🇿🇦 I too am a developer here currently building my own custom engine
@JordanGrantDev
@JordanGrantDev 2 ай бұрын
Awesome, Yes I am South African I hope your engine building is going well. And by the way what programming language are you using for the engine?
@luthecoder
@luthecoder 2 ай бұрын
@@JordanGrantDev thank you very much I’m also still learning how to build engines but I’m using C programming language to build it
@chance2480
@chance2480 2 ай бұрын
Your dad being here is so wholesome. Good video!
@umapessoa6051
@umapessoa6051 2 ай бұрын
Looking great, keep up the great work!
@JordanGrantDev
@JordanGrantDev 2 ай бұрын
Thanks :)
@МаринаКовбаса-м7к
@МаринаКовбаса-м7к 3 ай бұрын
Thank you for the tutorial! Just what I needed :)
@hazemdev
@hazemdev 3 ай бұрын
That's a good video, keep going
@drawingboard9055
@drawingboard9055 3 ай бұрын
Ai sim, no caminho certo! Muito bom ver crianças com boas escolhas!
@henrikhasell4470
@henrikhasell4470 3 ай бұрын
Great video
@JordanGrantDev
@JordanGrantDev 3 ай бұрын
Thanks :)
@too_oden2199
@too_oden2199 3 ай бұрын
You're awesome Jordan, thanks for the tutorial
@trentward4727
@trentward4727 4 ай бұрын
This was really helpful, thanks!
@FleambleFlorp
@FleambleFlorp 4 ай бұрын
The problem with this sapling add-on is the poly count is so damn high
@AlkanTC
@AlkanTC 4 ай бұрын
hey i have a question can i also make a button so when i click on the inventory slot that it selects that slot? instead of using the scrollwheel
@JordanGrantDev
@JordanGrantDev 4 ай бұрын
Hi @AlkanTC, sorry for the late reply, Yes, make an invisible button as a child of the Inventory prefab and give it a reference to the Inventory class. Next, you need to copy the SetSelectedIndex function and rename it to AddSelectedIndex and rename all uses of SetSelectedIndex to the AddSelectedIndex function Then you can modify the SetSelectedIndex to set its value to the selectedIndex, instead of adding it. So on SetSelectedIndex: selectedIndex = amount; Instead of: selectedIndex += amount; Leave AddSelectedIndex unchanged because we need to add the index to the value there. Then give a reference to the Inventory class to your buttons and call SetSelectedIndex with the value as the index of the slot. I hope this helps
@TotallyNotInspired
@TotallyNotInspired 5 ай бұрын
Great video! Do you have any idea on how to make the edges in marching squares look smooth, without using metacircles that make the whole terrain smooth?
@JordanGrantDev
@JordanGrantDev 5 ай бұрын
Hey @totallyNot, I'm glad you enjoyed the video! I haven't personally experimented with this, but if you merge all the connected splines into a few individual ones and, in the 'addShapeFromPoints' method, try replacing 'SKShapeNode(points: &shapePoints, count: shapePoints.count)' with 'SKShapeNode(splinePoints: &shapePoints, count: shapePoints.count)', then you should get smoother edges. However, I haven't had a chance to test it myself yet.
@gd5gd2021
@gd5gd2021 5 ай бұрын
Simple and Easy Handle to build character movement relating to keyboard control with animation coding using animator.
@tishalnarayan6497
@tishalnarayan6497 6 ай бұрын
Hello, I have a problem When I am writing the line of code [SerializeField] float minPipeHeight = - 1.79f, maxPipeHeight = 1.79f; [SerializeField] float XSpawnPos = 18.73f; it dose not work in my unity, is it my line or is there something wrong?
@JordanGrantDev
@JordanGrantDev 6 ай бұрын
Hi @tishalnarayan6497 There seems to be no errors with how you created the variables. Do you get any errors with your code? And if you do, can you paste the full error message in the comments along with the script.
@tishalnarayan6497
@tishalnarayan6497 6 ай бұрын
@@JordanGrantDev Na Its alright I used a new Visual Studios and it worked. Thanks for the informative video!!!
@i4l4
@i4l4 6 ай бұрын
I have a problem, In scripts, these pipe, parent, min pipe height, max pipe height, X spawn pos It dosn’t appear for me! 19:46
@JordanGrantDev
@JordanGrantDev 6 ай бұрын
Hi @i4I4 Make sure the variables in the script have a public or [SerializeField] tag before the variable. And If that is not the problem then make sure your script is saved and has no compile errors.
@davidtourangeau
@davidtourangeau 6 ай бұрын
Nice tutorial!
@Dragonsonicmonkeworldofficial
@Dragonsonicmonkeworldofficial 6 ай бұрын
yeah
@Sid0697
@Sid0697 7 ай бұрын
Hiii, Pretty please make a series how to create a Brawl Stars game on unity!!!
@PursueTheUnknown
@PursueTheUnknown 8 ай бұрын
Great video! Please keep this series going, so little info on SpriteKit out there.
@bobbygeneric9396
@bobbygeneric9396 8 ай бұрын
Awesome. You should import it into SwiftUI.
@handlehaggler
@handlehaggler 8 ай бұрын
boet how old is you
@handlehaggler
@handlehaggler 8 ай бұрын
howzit jordan mah bru
@MrJukaio
@MrJukaio 9 ай бұрын
Heh! Cool stuff :D Keep up the good work!
@jakecarvey
@jakecarvey 10 ай бұрын
Great dynamic. Clearly your dad is less skilled than yourself, and mad jealous. But as in all great drama and education, we all need an antagonist to react against. Well done.
@jakecarvey
@jakecarvey 10 ай бұрын
He started out cold, and warmed up as he realized you had already thought of almost everything. Pretty awesome to have a cool dad like that (who also can be humble and not threatened). I did, and still do as well.
@segain
@segain 11 ай бұрын
try editing the constraints in the rigid body to avoid tipping the tank
@JordanGrantDev
@JordanGrantDev 11 ай бұрын
Editing the constraints leaves some undesired side effects on uneven terrain, for instance, if you go up a hill the tank will stay level.
@JordanGrantDev
@JordanGrantDev 11 ай бұрын
We will do a bug cleanup in the next episode.
@burgerman6166
@burgerman6166 Жыл бұрын
I must say I see loads of potential and I hope you make the next hit game 👍👍
@rogercotton5134
@rogercotton5134 Жыл бұрын
Very entertaining and informative, young man.
@warrengrant
@warrengrant Жыл бұрын
Good grief this is fun to play its so bad reminds me of some old games were you just get hammered and it feels out of control its definitely worthy of alot more work/improvement good job!.
@yahyabzl1112
@yahyabzl1112 Жыл бұрын
i can make it in 30 minutes
@saltish999
@saltish999 Жыл бұрын
Nice
@EnderRobber101
@EnderRobber101 Жыл бұрын
Cool
@Lincolyn
@Lincolyn Жыл бұрын
I have a qeustion how are u so good at coding and how long did this take u to make?
@JordanGrantDev
@JordanGrantDev Жыл бұрын
Hi there! I started very young I have two parents that are both into IT, but saying that I spend a long time coding and the most important thing is that I enjoy it and that is critical to becoming good, The biggest part of the demo game took me 1 week to complete.
@Lincolyn
@Lincolyn Жыл бұрын
@@JordanGrantDev jeez man you’re crazy good with unreal engine keep the work going!
@Lincolyn
@Lincolyn Жыл бұрын
@@JordanGrantDev also you’re animations are super good you can make better animations then a AAA game studio
@redbandanacat6206
@redbandanacat6206 Жыл бұрын
Very very impressive! I didn't quite get if it's implemented or if you want to implement it still but how do you plan on implementing Culling for the blocks? Or Lag Control as you called it here. Also what made you choose .CSV as a format for saving?
@JordanGrantDev
@JordanGrantDev Жыл бұрын
Thank you, for the lag control, which I have not implemented yet, I want to hide any block that your camera is not currently viewing. For the saving I chose .CSV format because it was easy to visually edit in Numbers/Excel during testing, and it is easy for other users to edit the saves, if the saves get more complex I may switch to .JSON format, but I am open to any suggestions.
@terabits2341
@terabits2341 Жыл бұрын
Hello, can you tell me why I encounter such an error that interrupts scrolling? material texture property maintex has offset/scale set. it is incompatible with spriterenderer.
@JordanGrantDev
@JordanGrantDev Жыл бұрын
Unless you fixed the error already, then could you'd send me the SpriteScroller.cs code?
@terabits2341
@terabits2341 Жыл бұрын
​@@JordanGrantDev public class SpriteScroller : MonoBehaviour { [SerializeField] float speed; private Vector2 offset; private Material material; public bool canScroll = true; void Start() { material = GetComponent<SpriteRenderer>().material; } void Update() { if (canScroll) { offset = new Vector3(1, 0, 0) * speed * Time.deltaTime; material.mainTextureOffset += offset; } } }
@JordanGrantDev
@JordanGrantDev Жыл бұрын
​ @Евгений Матвеев Thanks for the code, I checked it, and it is not giving any errors, if you are still having the error, check the material and make sure that there is nothing wrong with it and if that doesn't work, try rebooting unity.
@terabits2341
@terabits2341 Жыл бұрын
@@JordanGrantDev kzbin.info/www/bejne/pJWWanmQodFrh6M I wrote down how it happens, I tried other pictures in different ways, the same thing.
@JordanGrantDev
@JordanGrantDev Жыл бұрын
Try making a new 2d project and doing the same steps, if it works, then there is something wrong with your previous project.
@Starfishvk
@Starfishvk Жыл бұрын
Damn bro…. Thnx for this informative video ❤
@grandmasterglick5895
@grandmasterglick5895 Жыл бұрын
Hey bud, very good job on this, how long did it take you? I'm very interested in voxels and you seem to have a good grasp on this stuff. Keep up the good work, you'll be a master gamedev in no time!
@JordanGrantDev
@JordanGrantDev Жыл бұрын
Thank you, I took about 2 weeks to complete the project, but I have taken a step back to find a better way of explaining it as the code was getting a bit over-complicated I will be carrying on soon with the series.
@grandmasterglick5895
@grandmasterglick5895 Жыл бұрын
@@JordanGrantDev very good bud, keep at it, you're a natural. Got any other big plans for another game?
@motamo
@motamo Жыл бұрын
Wow, this tutorial is amazing, thank you. Keep up the good work, you're doing an amazing job.
@Zachomara
@Zachomara Жыл бұрын
This is like a professional level tutorial. Very good job. You earned a subscriber, kid.
@Zachomara
@Zachomara Жыл бұрын
Very good tutorial.