Тёмный
Dan Greenheck
Dan Greenheck
Dan Greenheck
Подписаться
Hey there! My name is Dan. I've been coding for over 20 years. I started this channel to share my passion for 3D graphics and games. I create tutorials primarily focused on Three.js, but also dive into other topics from time to time.
Three.js Raycasting Tutorial for Beginners
11:08
7 месяцев назад
Procedurally Generating Planets with Three.js
3:26
10 месяцев назад
Комментарии
@rishabhvishwakarma5745
@rishabhvishwakarma5745 7 часов назад
i really am learning new things through this series , this series is awesome , Thank you so much sir😊😊,Also after completing this one i will watch your RPG game dev. series too
@immanImmanuel-l8x
@immanImmanuel-l8x 9 часов назад
thank you ery much i like this vedio
@SilasSWF
@SilasSWF 10 часов назад
Great work. Thank you so mush. It's really really amazing!
@karylchesman2475
@karylchesman2475 День назад
It's been a lot of fun to watch and do! Thank you for the content!
@dangreenheck
@dangreenheck День назад
Glad you enjoy it!
@cosmoledo8359
@cosmoledo8359 День назад
I really like your refactoring, but aren't you now creating instances of bushes/trees and rocks for nothing if the addObject function fails to really place them? Furthermore the base GameObject class can be made abstract! :) Can't wait to see the next episode.
@dangreenheck
@dangreenheck День назад
Thanks for the feedback! Mesh instances are just plain old JavaScript objects so GC will clean them up (no need to dispose of their resources since everything shares the same geometry/material). But agreed, better not to create objects if you aren't going to use them. Eventually they will be replaced entirely with InstancedMesh's to speed things up. JavaScript does not have the concept of abstract classes. You can throw an error in the constructor to imitate an abstract class, but there's really no problem with creating a base GameObject. And without a compiler, your code is still going to throw an error during runtime if you try and instantiate an "abstract" class.
@cosmoledo8359
@cosmoledo8359 День назад
@@dangreenheck I agree to both answers. JavaScript may not be as strict as other languages but the keyword abstract does exist. So creating an instance then would automatically error.
@dangreenheck
@dangreenheck День назад
Typescript has the abstract keyword, not Javascript (had to look it up!)
@cosmoledo8359
@cosmoledo8359 День назад
Ouh, you are right. I am too used to Typescript. :D
@dangreenheck
@dangreenheck День назад
Do the same thing all the time myself!
@bitcoin-predator
@bitcoin-predator День назад
I've been waiting for the next episode. Thanks for the great work!
@soniamaklouf1178
@soniamaklouf1178 День назад
Great work Will you make a serie with react three fiber ?
@dangreenheck
@dangreenheck День назад
I don't have plans for making a game with R3F, but I would like to do some more general 3D web videos with it at some point.
@dfernandezy
@dfernandezy День назад
Hey Dan! New follower here. Love your content!
@abcq1
@abcq1 День назад
This is awesome. Keep going, and thank you, learning from you a lot!
@KingOfNeptune_
@KingOfNeptune_ День назад
Can you make it multiplayer please?
@worldbest3097
@worldbest3097 День назад
amazingggg!
@immanImmanuel-l8x
@immanImmanuel-l8x 2 дня назад
😯
@sagar-tt4ub
@sagar-tt4ub 4 дня назад
Can we have a playlist for this project?
@dangreenheck
@dangreenheck 3 дня назад
I don’t have any plans currently to do a deep dive on this. The code is a bit too complex/mathematical for me to cover in a video.
@sagar-tt4ub
@sagar-tt4ub 3 дня назад
@@dangreenheck I understand. I actually meant something like a big playlist for this project Great work, none the less
@RafaelSales55
@RafaelSales55 6 дней назад
hi sir, are you ok? Every Monday I'm looking to see if RU-vid is uploading your video. I hope you're okay, I'm trying to develop new features that was not addressed in TODO file
@dangreenheck
@dangreenheck 6 дней назад
Sorry, I've been travelling the last few weekends! Hoping to get a new video up next Monday.
@RafaelSales55
@RafaelSales55 4 дня назад
@@dangreenheck thank you!!
@kevinlyman1
@kevinlyman1 7 дней назад
I get that I'm a year too late, but I think I like the more step by step approach. I don't need it but I like to see how people get from where the code was to where it is now. The thought process that's happening while coding, I think is the important part. Almost like learning to read, it's going to take a lot longer and be kind of boring for those of us that know how to read, but for people who don't know how to read hearing the words sounded out is crucial.
@dangreenheck
@dangreenheck 6 дней назад
That was the general consensus, so my more recent videos take the step-by-step approach. Check out my latest video series (Isometric RPG), I dive into my thought process in more detail in those videos.
@SilasSWF
@SilasSWF 7 дней назад
Exciting for next videos.Thank you!!1
@kevinlyman1
@kevinlyman1 7 дней назад
I'm loving this series
@likewisepro
@likewisepro 9 дней назад
Great tutorial. Very clear and focus. Thanks
@kevinlyman1
@kevinlyman1 10 дней назад
This is awesome! I was thinking of doing something like this the other day, came to youtube to see what I could find, and you'd already done it a year ago.
@mikeeotool2677
@mikeeotool2677 13 дней назад
WHAT UP DAN! Your videos are excellent! and easy to understand, I like your work so much that i subscribe to your channel.
@dangreenheck
@dangreenheck 12 дней назад
Awesome, glad to hear it!
@usernameusernameusername12
@usernameusernameusername12 15 дней назад
are you inspired by old school runescape? great vid
@home_produktionen
@home_produktionen 16 дней назад
thank you
@manuelsanchezweb
@manuelsanchezweb 16 дней назад
Love it! I am taking a bit of time every Sunday to catch up with this playlist! Thank you so so much!!!!
@ArtOfLifesFabric
@ArtOfLifesFabric 18 дней назад
Apology for being rude
@ArtOfLifesFabric
@ArtOfLifesFabric 18 дней назад
you are doing the student confused by changing like this it get more frustrated
@danielevangelista2302
@danielevangelista2302 18 дней назад
Thanks! I like a Lot of isométric games!!!! Great job!!!!
@TriviaTemple_German
@TriviaTemple_German 19 дней назад
Can someone tell me where my Typo at 9:00 is?: import * as THREE from "three"; const geometry = new THREE.BoxGeometry(); const material = new THREE.MeshLambertMaterial({ color: 0x00d000}); export class World extends THREE.Group{ constructor(size = { width: 64, height: 32 }){ super(); this.size = size; } generate(){ const maxCount = this.size.width * this.size.width * this.size.height; const mesh = new THREE.InstancedMesh(geometry, material, maxCount); mesh.count = 0; const matrix = new THREE.Matrix4(); for (let x = 0; x < this.size.width; x++){ for (let y = 0; y = this.size.height; y++){ for (let z = 0; z < this.size.width; z++){ matrix.setPosition(x + 0.5, y + 0.5, z + 0.5); mesh.setMatrixAt(mesh.count++, matrix); } } } this.add(mesh); } }
@Car0linaPh03nix
@Car0linaPh03nix 19 дней назад
2:07 where is the link though?
@dangreenheck
@dangreenheck 19 дней назад
Sorry about that! Added link in description.
@TheOctoberwu
@TheOctoberwu 19 дней назад
really enjoyable to watch! great tutorial.
@TriviaTemple_German
@TriviaTemple_German 20 дней назад
At 9:00 i cant enter my website because i dont have enough fps or whaterver but heres my world code: import * as THREE from "three"; const geometry = new THREE.BoxGeometry(); const material = new THREE.MeshLambertMaterial({ color: 0x00d000}); export class World extends THREE.Group{ constructor(size = { width: 64, height: 32}){ super(); this.size = size; } generate(){ const maxCount = this.size.width * this.size.width * this.size.height; const mesh = new THREE.InstancedMesh(geometry, material, maxCount); mesh.count = 0; const matrix = new THREE.Matrix4(); for (let x = 0; x < this.size.width; x++){ for (let y = 0; y = this.size.height; y++){ for (let z = 0; z < this.size.width; z++){ matrix.setPosition(x + 0.5, y + 0.5, z + 0.5); mesh.setMatrixAt(mesh.count++, matrix); } } } this.add(mesh); } }
@dangreenheck
@dangreenheck 20 дней назад
Check your for loop conditions, you have a typo.
@TriviaTemple_German
@TriviaTemple_German 20 дней назад
@@dangreenheck Where?
@TriviaTemple_German
@TriviaTemple_German 20 дней назад
@@dangreenheck Can you please awnser, i struggle since yesterday?
@TriviaTemple_German
@TriviaTemple_German 20 дней назад
@@dangreenheck Hello?
@RafaelSales55
@RafaelSales55 20 дней назад
You’re showing us the way to develop. If I had planned my projects and maintained this consistency, I would have finished them. Thank you.
@killowatts6976
@killowatts6976 20 дней назад
Finally got the time, let's get this done!!
@dangreenheck
@dangreenheck 20 дней назад
Good luck!
@killowatts6976
@killowatts6976 19 дней назад
@@dangreenheck Thanks! Following along with typescript has made it interesting but more tedious as you mentioned. 🥲
@gbegerow
@gbegerow 21 день назад
Good video, I like how you build the algoriithm step by step. But honestly the pronouciaton of Dijkstra hurts ;-). ij sounds just like the englisch I. You can hear a sample on the wikipedia page about Edsger Dijkstra. .
@TriviaTemple_German
@TriviaTemple_German 22 дня назад
At 10:25, my Vite Website has the error: HTTP ERROR 404.
@gilney.mathias
@gilney.mathias 22 дня назад
Indeed a true dev, using git on terminal while coding on an IDE with git integration 😎
@dangreenheck
@dangreenheck 22 дня назад
This is the way.
@worldbest3097
@worldbest3097 22 дня назад
love you!
@supermroz
@supermroz 22 дня назад
This was very enjoyable to watch, thank you! The game is progressing along nicely, looking forward for the next episodes.
@txmw4464
@txmw4464 24 дня назад
Another awesome video! - I would love to see some kind of main menu/options screen implementation to see how that would work. It would also be sick if there was an episode later on surrounding maybe a skybox or water shader surrounding the terrain! - Great video!
@juancamilomontoyablandon1248
@juancamilomontoyablandon1248 24 дня назад
Good video, but I have a problem, the model does not load and errors appear on the console, can you help me please?
@rakshithashettigar5427
@rakshithashettigar5427 25 дней назад
this is an amazing tutorial!!!! Thank you !!
@AllisonRenée-e3e
@AllisonRenée-e3e 26 дней назад
Love the project Bur I am having an issue at 9:01, right after we fixed the code to only update when a building is upgraded, built, or removed. When i checked my browser as you did I just have the grassy platform now and no buildings are being built. I checked dev-tools and inspect and there are no issues as my game is still being updated with my mouse moves. I doubt you want me to waste space by putting my source code here but do you have any idea what the issue might be?
@dangreenheck
@dangreenheck 26 дней назад
Unfortunately I can't offer much help without looking at your code. I would recommend using plenty of console.log() statements and see where your code might not be behaving as expected.
@lucasmorales2836
@lucasmorales2836 6 дней назад
Hi! I had the same issue and solved it by replacing 'this.building' with 'this.buildingId' in city.js file (lines 17 to 22 in my code). Hope this helps.