Тёмный

When You Can't Use Unreal Engine To Make A Game 

James Lambert
Подписаться 70 тыс.
Просмотров 21 тыс.
50% 1

Brilliant link to get 30 days free and 20% off an annual subscription
brilliant.org/JamesLambert/
I teach you principles that I have learned over the years to help you succeed in making your own game engine when you can’t use out of box engines like Unity, Unreal Engine, and Gadot.
Patreon
/ jameslambert

Наука

Опубликовано:

 

30 июл 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 138   
@Evgeny1
@Evgeny1 Месяц назад
The more mature I become as a programmer, the simpler the code I write
@DamianReloaded
@DamianReloaded Месяц назад
The more mature I become as a programmer, the better code I can make chatgpt generate XD
@capncoolio
@capncoolio Месяц назад
@@Evgeny1 I've found myself settling into descriptive, almost functional patterns, over time. Tends to read more like telling the computer what I want it to do, rather than how to do it.
@iamhand
@iamhand Месяц назад
It's the bell curve of experience wojack meme
@fisch37
@fisch37 Месяц назад
Looking at my past work, yeah that tracks! LoC isn't a good measure turns out
@Shrek_es_mi_pastor
@Shrek_es_mi_pastor Месяц назад
Same happens to writers
@JoshuaBarretto
@JoshuaBarretto Месяц назад
As someone that's been writing games without engines for many years, I can say that all of this is excellent advice. Component systems in particular are *the* way to go for scaleable, dynamic, complex behaviours without spaghetti appearing in the code logic. The 'make a game, not an engine' advice is superb too: avoiding over-engineering is essential to make headway in this space.
@diskpoppy
@diskpoppy 28 дней назад
For anyone wondering: the approach that unity uses is generally called Entity Component System (ECS), and it's not even associated with OOP, rather tending to be used alongside data-oriented design (the approach could be summarized as: for every subsystem responsible for a given component, build a flat array of the relevant data from the relevant entities, that is then simply looped over without any pointer chasing)
@ITR
@ITR 21 день назад
Not really, unity uses more of an object oriented component system, with low separation of data and logic and higher complexity if you try to use composition. Unity DOTS however has a proper ECS system, but most unity developers don't know how to use it
@diskpoppy
@diskpoppy 21 день назад
@@ITR Ok, I stand corrected, I haven't used much of Unity, but that makes sense
@LovroPlaninsek
@LovroPlaninsek Месяц назад
literally the only sensible sponsorship from brilliant on youtube, even for some maths education channels - why would you need an online education course - but for programming, specifically for n64? you'd definitely need to not just grasp, but also master those concepts
@alicethetransdalek7333
@alicethetransdalek7333 Месяц назад
there are so many people on the internet spreading bullshit about how "oh you should never make your own engine" "if you want to make a game you should only use one of the big popular engines", it's so absurdly refreshing to just see a video going "i make my own engine, here's some tips on how to do it" lol
@ramoncf7
@ramoncf7 Месяц назад
It's a good advice for 99% of the people trying to make a game. Finishing a game is extremely hard, adding a game engine from scratch multiplies the time needed to finish it by a factor of 3 at least.
@orangy57
@orangy57 Месяц назад
If you want to finish all your games or are trying to get a job in the industry then don't code an engine. If you like to tinker and have total control over your game then make an engine
@swordofkings128
@swordofkings128 Месяц назад
@@ramoncf7 Yeah I wrote a 3d renderer and model loader in C++/OpenGL for an assignment for college (it had to have geo with normals, diffuse and specular textures, the world needed multiple light sources, a 3d user controlled camera) and just making that was a nightmare (we had 6 weeks and I had other classes and a job which didn't help!). Imo 99% of people who want to make a game would give up way before actually making anything besides a 3d camera in a blank void with some boxes and triangles cuz like... if that weren't a graded assignment I would of stopped after making a triangle spin around or something.
@Kenionatus
@Kenionatus Месяц назад
​@@orangy57Wouldn't having made a decent engine be good on a résumé? Ok, guess it depends on the capabilities, considering how simpler games can run on horrid spaghetti that makes god weep. (Note that I'm just a random person on the internet with very little game dev and zero industry experience.)
@lexacutable
@lexacutable 15 дней назад
​@@Kenionatus (game developer here) Yeah, it would look nice on a resume. But depending on what you mean by "decent engine" it may also take at least several years of your life and never be finished. A simple, specialised engine is worth trying, and in fact in my university course we did just that. Making a well-performing engine for something like the N64 requires a lot more low level technical knowledge though, as compared to programming for PC.
@im-nassinger
@im-nassinger Месяц назад
I love how he shows examples to explain the concepts he talks about
@jimmyhirr5773
@jimmyhirr5773 29 дней назад
You're not the only one critical of object-oriented programming. I've heard that many authors of high-performance game engines eschew object-oriented programming. Instead they do what's called data-oriented design. They say it is more performant because it reduces memory accesses and improves cache locality. In some cases, it makes it possible to use SIMD instructions.
@jakeparkinson8929
@jakeparkinson8929 Месяц назад
You're by far one of the coolest people out there.
@mr_indie_fan
@mr_indie_fan Месяц назад
Yooo, the king of the N64 is back! 👏🤠
@pdlbackup
@pdlbackup Месяц назад
Really good tips in this video! I agree that it's very important to just make something work, instead of worrying about issues you don't even have yet. Obviously it's good to think about the future, but I have personally noticed that it honestly usually isn't even too much work to rewrite certain parts when problems show up, even if the code is badly written.
@james14294
@james14294 Месяц назад
The last time I asked a game dev what tips they had in regards to making a game engine was... (assuming you are doing to develop a game, and not just for the sake of making an engine) Dont... Or only do it if the game you want to develop has a requirement that cannot be reasonably met by current engines. Using Noita as an example, due to every pixel being simulated stuff.
@1337pianoman
@1337pianoman Месяц назад
I was looking for a way to code games on my phone so I could hopefully shift mindless reddit scrolling time into game dev. I found a simple text editor that would let me write html and js with syntax highlighting and run it in the browser. Then I just started writing. It took maybe a couple of hours to have an interactive thing and then a handful more before to have a simple game. Technically I guess I'm writing a game engine. I feel like people have a warped idea of what that means though because of things like unity and unreal. The advice to focus on making the game and only develop the engine features as you need them is excellent
@DanielKierkegaardAndersen
@DanielKierkegaardAndersen Месяц назад
The rules mentioned sounds a lot like "The Rules of Programming" by Chris Zimmerman, a tech lead for Suckerpunch, making Sly, Infamous and Ghost of Tsushima 😅.. can definitely recommend
@quackcharge
@quackcharge Месяц назад
appreciate the insight! excited to see more from your new project
@Dysiode
@Dysiode Месяц назад
Excellent discussion! I have, as many many of us have, definitely spent more time writing the game engine instead of writing the game. It always feels like if I get that out of the way first I'll be able to breeze through writing the game. TBH, your mentioning that has kindled a small bit of motivation to work on a personal project that's been sitting idle for a few years now... Though, I will bring everyone back to a critical point from the Zen of Python: > There should be one-- and preferably only one --obvious way to do it. > Although that way may not be obvious at first unless you're Dutch.
@TrevelyanOO6
@TrevelyanOO6 Месяц назад
Sounds like Bevy’s ECS model. Entities, Components, Systems.
@admiralAlfonso9001
@admiralAlfonso9001 27 дней назад
I liked the old thumbnail and title better because it was more understandable
@thenamelessavenger
@thenamelessavenger Месяц назад
I'm not a programmer and I understood what you said. Thank you! And looking forward to more of your game updates.
@dansnull
@dansnull Месяц назад
Great advice! Thanks for making these videos!
@iamhand
@iamhand Месяц назад
Welp, now I got to look at refactoring parts of my Pico-8 game. Half of my systems use references to find entities and the other use IDs. Kind of a mess 😅
@TRUSTLBLACKMETAL
@TRUSTLBLACKMETAL 29 дней назад
such good advice, and explained so well. thank you.
@MatthewBakke
@MatthewBakke 28 дней назад
You always give off “smartest and most relaxed college professor” vibes. Always great videos!
@mrbeanie7676
@mrbeanie7676 Месяц назад
big fan of your strategy game mission lost control.
@ArneChristianRosenfeldt
@ArneChristianRosenfeldt Месяц назад
Pointers are Ids. The only difference is that pointers have byte granularity. Pointers can be set to null. If we divide the memory too down as on a C64, we can use pages. So a byte only. Every indirection is bad on RAMBUS. If you have typed arrays and use them as pools, you can get away with smaller pointers (typed indices). So gameobjects with references fit into cache or registers. Malloc and free work the same for ids and pointers. You go through your pool and search for a free (deleted) slot. Search while you vsync.
@MopeyMoon
@MopeyMoon Месяц назад
Pointers are IDs the same way pointers are also optional types. The key difference is that if you hold a pointer, there is nothing stopping you from dereferencing it, whereas if you only hold an entity ID, you have to pass it to a system that enforces checking before you can anything with the referenced object if it even still exists.
@ArneChristianRosenfeldt
@ArneChristianRosenfeldt Месяц назад
@@MopeyMoon I never had problems with invalid pointers. I guess I used too much Java, C#, and smart pointers in C++. Often I end up with double links because I need the cascade effect right there. With IDs and an in memory database we can use a b-tree to manage memory and defragmentate it. In Java H2 is such a Database. For C there is SQLite? So IDs would live forever? Sounds like a memory leak to me.
@sanderbos4243
@sanderbos4243 Месяц назад
​@@ArneChristianRosenfeldtIDs are just integers that don't have any lifetime associated with them, so I don't see how that could cause a memory leak. For example, say that entity 1 has an "attacking_id" field with an ID integer of 2, then it doesn't really matter whether entity 2 has already been killed or not in terms of memory leakage
@ArneChristianRosenfeldt
@ArneChristianRosenfeldt Месяц назад
@@sanderbos4243 but then you could just as well use pointers to attack types. Is this about serialisation? I mean, in code you try to avoid using “type1”, but you write “low poking attack” . The compiler then can either use enums to compile this to IDs , or static fields to compile to pointers.
@sanderbos4243
@sanderbos4243 Месяц назад
@@ArneChristianRosenfeldt When I used "attacking_id" as an example, I meant "what entity ID am I attacking?", not "what type of attack am I performing?". It doesn't really matter whether it's an int or a pointer or a double, but the point is just that you don't want to have it be a pointer to a raw memory location that you dereference. The blog post "Handles are the better pointers" goes in much greater detail of the many advantages of it, so I highly recommend checking that :)
@flythereddflagg
@flythereddflagg 28 дней назад
I'm not sure I want to go back and refactor my code but this makes a lot of sense. Especially the entity ID system.
@megan_alnico
@megan_alnico 29 дней назад
I remember an old Gamasutra article talking about a game having a lot of issues with its physics engine. A new person came in and made the observations that even though it was a 3D game, all the collisions could be done in 2D instead. The new code was simlle and efficient and got the job done. I think about this kinda thing a lot when people talk about using off the shelf game engines. How much is your engine doing that is unnecessary for your game?
@hoffer_moment
@hoffer_moment Месяц назад
would love more videos kinda like this :)
@johnsimpson1507
@johnsimpson1507 Месяц назад
Nice video james. I want to get into n64 programming. I am an experienced c programmer but know nothing about n64 programming or graphics. Is the official sdk running on xp a good way to start? Thx
@CYON4D
@CYON4D 27 дней назад
Nice one.
@ellielikesmath
@ellielikesmath 29 дней назад
i probably will never understand why people care this much about the n64, but i'm glad people are working on it anyway.
@MrVampify
@MrVampify Месяц назад
The second rule in my opinion is the most important rule in all of programming. At my work, we have a colleague who was tasked with making an automation script for our infrastructure, related to our monitoring. I had a couple other colleagues berate him with feature requests. I kept telling him, if a feature is not needed for the usability of the task, it can be made later. I am now re-writing it from scratch because it became a complex unmovable and unusable spaghetti code with hard-coded values that were inflexible, and dependant on external systems. I wrote the entire thing in 3 classes, and can be configured with 1 configuration file. I have added 2 features since, which allow us way more flexibility and not only automate what needed to be automated, but we can extend the original capabilities of what we were using. Simple, is better than capable.
@n8cantor
@n8cantor Месяц назад
If you get rid of stale references you at least need to make sure that you forget to cap backwards moving speed
@smileynoob
@smileynoob Месяц назад
Hello, what practices are you planning 🎉
@r.g.thesecond
@r.g.thesecond Месяц назад
One tiny but smart thing I picked up looking at other game engines is that EntityID can just be pointer. No need to keep a special count. On modern hardware you might incur a pointer indirection and caching issue but even then sometimes it's no biggie.
@legoboy7107
@legoboy7107 25 дней назад
"You might be optimizing code that only gives you nanoseconds of improvement." Kaze Emanuar: And?
@deconimus2393
@deconimus2393 28 дней назад
It is perhaps noteworthy that the components pattern mentioned around 3:40 is also possible in C, even though C is not an object oriented language. Simply by using instances of structs and pointers. E.g. have a struct GameObject, which has pointers of structs Damageable etc. If the damageable pointer is NULL, the gameobject doesn't have that component and so on. In this particular case of an N64 game this exact implementation of the pattern might be inefficient due to memory limitations though (not sure).
@marksmod
@marksmod Месяц назад
6:27 to be fair, the number still is a reference, its just a managed one.
@james.lambert
@james.lambert 29 дней назад
That is true
@JamieBainbridge
@JamieBainbridge Месяц назад
I'm just a tinkerer who fell into the hole of writing an engine. It's really good! Anyway I wanted to write something new and I banned myself from my own engine, just use something that exists and get on with it. I've made more progress on my ideas than I ever have before lol
@zanagi
@zanagi 26 дней назад
I'm not sure if you can publish a game that used proprietary engine on steam without contacting them directly...
@SpaghettiEnterprises
@SpaghettiEnterprises 25 дней назад
Ugh I felt this. Was looking at some stuff today that I wrote a few years ago and hoo boy... Definitely solving some imaginary problems there
@celebraces2
@celebraces2 21 день назад
Ah, my favourite error message that means nothing to the user: "object reference not set to an instance of an object"
@lfarrocodev
@lfarrocodev Месяц назад
A question about one entity doing something to another one (eg. damage). Is an unit authoritative enough to direct apply damage to another one? Or that's up to another system?
@james.lambert
@james.lambert 29 дней назад
I would say that depends on what your game needs. I found it typically works fine for one actor to directly apply damage to another.
@qwfp
@qwfp Месяц назад
My bonus tip would be: know whether you want to make a game or a game engine. Sometimes you just want to make a game engine and that's fine. That can be a lot of fun as well. Just make your goals clear.
@salcarreiro6756
@salcarreiro6756 27 дней назад
do you think a game like Zelda: Phantom Hourglass for the NDS would run on N64?
@James_Kosmo
@James_Kosmo 22 дня назад
Idk if it is possible, but lately I've been experimenting with re-coding a game through the game it self, for example in Minecraft each block has a binary code to identify it, there is a way to "combine" the first part of one block and the last part of another, therefore combining two blocks into a new , deferent one. What I'm saying is that couldn't you glitch the game when you use an id? With classes I don't think its possible, but with ids it can be done.
@james.lambert
@james.lambert 22 дня назад
I'm not entirely sure what you are asking but I if there are two separate configurations for a block then you want two separate pieces of information on the block. I would also not use the entity/gameobject system for each individual block. I would have a single game object manage groups of blocks.
@James_Kosmo
@James_Kosmo 22 дня назад
@@james.lambert I wrote the comment while in a hurry. What I meant was that you can glitch games into doing something else by doing certain actions. For example in super Castlevania, you can skip the whole game by performing a boosted jump and enter the next screen, if you do that the game checks the state of the character through a number. For example if the player is idle the number is 1, if he attacks 2 etc. The game is designed for the character to enter in the walking state but if you enter in the attacking state the game gets confused since the number happens to glitch the game. If it used classes (which was impossible) then this wouldn't have happened. It is very complicated to explain, I hope that I cleared things out. If not , just search super Castlevania Speedrun and I think you will understand that I'm saying.If you are reading this love your vids!
@BSzili
@BSzili Месяц назад
Out of curiosity, why do you hold a microphone stand that was meant to put on at able in your hand, bashing the cable into it? Is this programming ASMR? 😀
@philcoast1031
@philcoast1031 Месяц назад
More like a reverse ASMR. The constant noise was very distracting thoughout the video.
@CCCP-sr9ou
@CCCP-sr9ou Месяц назад
Is it possible to hack the processor on a real Nintendo 64 console and increase the frame rate per second like MiSTer FPGA does? turns on the Turbo BOOST
@inxomnyaa
@inxomnyaa 26 дней назад
That is very much like my current ECS works (in PHP. OOP is definitely overrated) 👍🏻 I wish i would've had that advice earlier, I've always added more and more features 😅 Though, i have developed that behavior because i kept rewriting everything in my code, especially APIs
@Muskelhias
@Muskelhias Месяц назад
Cool! Was this your main job?
@james.lambert
@james.lambert Месяц назад
My full time job is web development but I have been making games as a hobby for a very long time
@trashtrash2169
@trashtrash2169 Месяц назад
This is the way. Just having a main job and making games on the side, web development specifically sounds like a drag, like working a job where you just make excell sheets all day.
@daveloomis
@daveloomis Месяц назад
where'd you get the shirt??
@PatinaGames
@PatinaGames Месяц назад
I wish i had the skill, i’ve been trying to re create all the effects and texturing techniques for modern game engines and making encoding and light baking tools in blender
@jumhig
@jumhig Месяц назад
The games I write for retro systems almost always end up using a "game object behaviour" system. Then there is also rendering and audio systems to implement too.
@rayflyers
@rayflyers Месяц назад
I'm a data scientist who uses high-level languages, and I want to learn a lower-level language for game design as a hobby. I can't decide between C and Rust. Thoughts?
@albinekb
@albinekb Месяц назад
Rust is amazing but it takes a long time to get good at managing all those types. Maybe start with C since its surface area is a lot smaller, then when you got the hang of pointers and stuff you can start with Rust. But of course it depends on what your level is now and how much time you got to spend. I would go straight to Rust again, coming from node/npm i feel right at home with cargo and crates.
@Starwort
@Starwort Месяц назад
If you're coming from high level languages, I would probably recommend jumping straight into Rust - it has one of the best type systems you will ever use. Rustlings is a great starter resource, though there are of course plenty of other ways to learn
@Irockman1
@Irockman1 Месяц назад
I haven't used Rust, but I've heard from other game developers that it's slow to iterate and experiment in Rust because of things like the borrow checker that try to make you program things "correctly", when what you want in game development is the ability to program things stupidly at first so you can rapidly try things out. Someone wrote an in-depth article on this called "Leaving Rust gamedev after 3 years".
@samuelschwager
@samuelschwager Месяц назад
I would offer two alternative recommendations: Odin and Zig. Both are more powerful than C but not as complex as rust.
@Raspredval1337
@Raspredval1337 Месяц назад
btw, what do u think about embedding a scripting lang, like Lua, in a N64 environment? Would that even be possible? 🤔
@ArneChristianRosenfeldt
@ArneChristianRosenfeldt Месяц назад
What do you want to Skript? Events in the level?
@randomcatdude
@randomcatdude Месяц назад
maybe possible but it would really be a better idea to create a custom scripting system for the specific purpose embedding lua into an n64 game is overkill imo
@Raspredval1337
@Raspredval1337 Месяц назад
@@randomcatdude the Lua runtime is rather compact, plus it has a nice C interface. It would be much easier to make the mentioned entity system in a dynamic type lang, than in C
@ArneChristianRosenfeldt
@ArneChristianRosenfeldt Месяц назад
@@Raspredval1337 and we be slow as hell. Static types give you speed, especially in an Array.
@Raspredval1337
@Raspredval1337 Месяц назад
@@ArneChristianRosenfeldt maybe, since the N64 bottleneck is memory access and dynamic type langs add significant memory overhead. Still, it might be ok for some tasks. Plus, it can be as performant as C code with a JIT compiler.
@al_capad
@al_capad Месяц назад
Wouldn't bitflag array of let's say 16bits (elements) be simpler and quicker?
@sanderbos4243
@sanderbos4243 Месяц назад
In the specific examples he showed here that's absolutely the way to go, assuming you won't need more than 64 bits. In terms of ECS, he explained tagging stuff, but you usually also want to be able to store information in the tag, which is called a component. So think of having a "health" component that you can slap onto anything and just contains a double.
@RealTal.
@RealTal. 25 дней назад
Yeah stale refference manipulation is what breaks OOT its serious stuff
@NickAndWolf
@NickAndWolf Месяц назад
yeah i try to stick to C and think around stuff like OOP. While people love C++, C#, and Python; C (to me) allows the most flexibility in the long run regardless of project.
@Krbydav328
@Krbydav328 Месяц назад
we love ECS in this house
@GhibliNova
@GhibliNova Месяц назад
If you ever need a writer for a game I'd love to send in some work as an audition! 😁
@james.lambert
@james.lambert 29 дней назад
Send me a message on discord and we can talk. I don't have a huge need for writing right now as I am still working on gameplay mostly but I wouldn't mind the help later on. lambertjamesd#3921
@GhibliNova
@GhibliNova 29 дней назад
@@james.lambert Awesome! Thanks for responding! I couldn't find a way to message so I sent a friend request. I hope that's okay, I've never really used Discord before 😅
@insu_na
@insu_na Месяц назад
And now to make it scalable use a message queue paradigm 🤣🤣 Edit: I'm mostly joking because I don't know what N64 systems are capable of and most of my game dev knowledge comes from server-side code. I'm nevertheless curious if zeromq or the like can run on N64. Tho given that N64 seems to be single-threaded I doubt there's much efficiency to gain here, except maybe to simplify the code required for batch processing of multiple events as an optimization.
@trashtrash2169
@trashtrash2169 Месяц назад
I like the animations in the untitled game.
@watercat1248
@watercat1248 Месяц назад
To be fer the are many stuff in game engine like unity that you forsh to use, That you don't have to use in every component if you make your own game with your own engine, For the transform many system like 2D sounds don't need transform in the order to work, This just only one off the multiple examples The Truth game engine are great and easy to work especially wean you Solo developer like my self and try to make big project, However the have very specific architecture and if your trying to make big project like I did you may end up found the limitesion those software's have. For example I'm using unity to make this fps game and I have already found multiple limitesion this game engine have.
@anon_y_mousse
@anon_y_mousse 29 дней назад
My tip for writing a game for a limited system is to A) don't do it B) if you really insist then use one of the open source engines such as Doom [1-3] or Quake [1-3] and go from there. However, I do completely disagree with you regarding object oriented programming in C. You absolutely can do it and I do it all the time. There are only two concepts in programming that you should always say no to using and that's recursion and recursion. For all else, moderation is the key. Use a moderate amount of the concepts, only as they apply to the problem you're trying to solve. Towards that end, you absolutely can create an object system for your game engine, but if you're targeting an N64, maybe consider something much more simple.
@LeopoldPeters
@LeopoldPeters 24 дня назад
He says objectoriented is overrated and then makes his own object orientation😂
@PauLtus_B
@PauLtus_B 27 дней назад
I always find it painful to see how many massive budget games are still just made with the Unreal engine. These games have so many resources yet they're still not building an engine that would specifically serve the game they're creating. I really wonder how many unnecessary calculations are constantly being made.
@nowicando7651
@nowicando7651 22 дня назад
you said you are making your own engine? can you release some? I will be trying to get JavaScript to run with this. send me some.
@james.lambert
@james.lambert 21 день назад
Here is what I have so far github.com/lambertjamesd/spellcraft I don't know how much of this will apply to your environment
@nowicando7651
@nowicando7651 20 дней назад
@@james.lambert #include int main() { const struct { void (*log)(const char *); } console = { .log = printf }; console.log("Hello world from an edge of JavaScript"); } we have to get this lib to provide the ability to understand JavaScript. I want to use your lib in the future.
@nowicando7651
@nowicando7651 10 дней назад
@@james.lambert can you make this lib an installer, please?
@DamianReloaded
@DamianReloaded Месяц назад
You could potentially use a pool of pre allocated data in an array and use their position in the array as entity id, then have a bit array of the same size indicating whether a given entity is in use or not, thus avoiding the hashmap look up. In c you don't have classes but you still have structs, which are essentially the same thing, only that you would have the methods/functions operating on a struct outside and no inheritance which is looking every day more like a good thing really. I'm just rambling out loud in case anyone didn't know this XD
@ArneChristianRosenfeldt
@ArneChristianRosenfeldt Месяц назад
Why are your structs all the same size? Any strings?
@DanielKierkegaardAndersen
@DanielKierkegaardAndersen Месяц назад
Sounds a lot like an archetype ECS :P
@Clodd1
@Clodd1 Месяц назад
4:23 HOT TAKE! (I agree!)
@SpaceCond0r
@SpaceCond0r Месяц назад
Why do you think so? Genuinely curious.
@jimmyhirr5773
@jimmyhirr5773 29 дней назад
"Write reusable code" conflicts with "only solve problems you have right now" and "keep it simple." The desire to write reusable code is what causes writing a game engine instead of a game. The way I avoid this is by extracting reusable code. I write code without thinking about reuse, and if I notice duplication, I remove it by refactoring. This is easy to do in the refactor step of the Red-Green-Refactor TDD loop.
@SnakeEngine
@SnakeEngine 28 дней назад
Well, "keeping it simple" is hard. And "writing reusable code" is hard, so that you have then a simpler time ;)
@user-pg3jr4dc6w
@user-pg3jr4dc6w 22 дня назад
Portal para Android
@RC-1290
@RC-1290 28 дней назад
Writing re-usable code is hard, because you don't know how you'll want to re-use later, and you're likely to end up with code that's annoying to use twice. It's much easier to write the same-ish code twice, and compress them into one if it makes sense.
@lexacutable
@lexacutable 15 дней назад
I absolutely disagree. Writing reusable code is a habit, and you can develop an instinct for how to write pretty much anything in a reusable way. It's not really a case of trying to decide what you'll want to reuse and maybe getting it right or wrong.
@capncoolio
@capncoolio Месяц назад
Tips for making your own game engine: don't. 🤣
@ojregnier
@ojregnier Месяц назад
out of bounds, is 6tf UNDER OUT OF BOUNDS
@fisch37
@fisch37 Месяц назад
Can I get those 30 days free in a bag for later, please?
@thomassynths
@thomassynths Месяц назад
You made C++ sad.
@tediustimmy
@tediustimmy Месяц назад
You can do object-oriented programming in C. It's an abomination, but it's possible.
@angryparrot
@angryparrot Месяц назад
OOP is overrated. *gasp* Yes. Yes it is.
@cakestealer5983
@cakestealer5983 Месяц назад
Well first you gotta know how coding works... Hence I’m not making my own engine
@CYXXYC
@CYXXYC Месяц назад
man described ECS (Entities-Components-Systems) and complains at not having OOP, for some reason
@snesmocha
@snesmocha Месяц назад
game objects follow an oop behaviour tho. ecs is basically just game objects but without the class component. though they're inherently a completely terrible idea both implementations for a game on the n64 since memory bandwidth is awful at best.
@ArneChristianRosenfeldt
@ArneChristianRosenfeldt Месяц назад
@@snesmochaRamBus goes vroom. C structs and arrays are localised. Align to 16 byte cache boundaries. The bad thing about MIPS is that it blocks on a cache miss, while AtariJaguar only blocks when we access the register which we load to.
@DanielKierkegaardAndersen
@DanielKierkegaardAndersen Месяц назад
​​​@@snesmochaECS is not inherently OOP, nor is GameObjects. At least based on most metrics of OOP you can go by, clean code, solid, filled with inheritance etc. However, it is correct that ECS can have a performance impact as nothing beats a linear array of cache friendly memory. That's why Archetype based ECS stores things in section of linear memory (which his is currently sadly not which is okay because of what he calls rule 2). ECS is especially good for a middle strategy approach. That is, in the beginning linear array is easiest to program, then when it gets hard to maintain, go ECS. At some point performance concerns hits, and you pull some of it back. Thus the reason I'm calling it a middle strategy
Далее
Why You Shouldn't Make A Game Engine
25:39
Просмотров 15 тыс.
Ouch.. 🤕
00:30
Просмотров 5 млн
"Tech that let me down" Special 3
10:57
Просмотров 197 тыс.
Lego Racers Can't Be Made Today
22:10
Просмотров 594 тыс.
Why Don't You Make Your OWN Game Engine?
7:23
Просмотров 9 тыс.
The $2.1 Billion McDonald's Machine
10:35
Просмотров 703 тыс.
How Games Have Worked for 30 Years to Do Less Work
23:40
How Does the Hedgehog Engine Work?
22:07
Просмотров 177 тыс.
How I optimized Portal to run on the Nintendo 64
11:34
Просмотров 586 тыс.
The cloud is over-engineered and overpriced (no music)
14:39
How A Steam Bug Deleted Someone’s Entire PC
11:49
Просмотров 942 тыс.
Can Portal 64 be saved? - Libdragon
8:46
Просмотров 105 тыс.