I built my own 3D Game Engine with Open-Source Tools

Поделиться
HTML-код
  • Опубликовано: 23 ноя 2024

Комментарии • 602

  • @ModernVintageGamer
    @ModernVintageGamer  27 дней назад +38

    Go to nordvpn.com/mvg to get a 2-year plan plus 4 additional months with a huge discount. It’s risk-free with Nord’s 30-day money-back guarantee!

    • @punpck
      @punpck 27 дней назад +8

      nordvpn is so annyoing with there ads everywhere. For this reason I would never become customer at them 🤣

    • @gfdgdfgdfgdfggfdgdfgdfgdfg9709
      @gfdgdfgdfgdfggfdgdfgdfgdfg9709 26 дней назад +1

      I make my games in flash. Before that I made 3d games with 3d game studio. And before that I used click n play :)

    • @Nobe_Oddy
      @Nobe_Oddy 26 дней назад

      since you said you're at a juncture where you don't really know where to go from here and you might be looking for some ideas I thought of a good one that you actually mentioned a couple times already..... Why don't you aim to make the engine to be capable of making an up-to-date/modern remake of Rise of the Triad? No one has done that yet and you could create a quite unique engine... One of the big things I remember about RotT was that it allowed you to move in 3 dimensions (I'm pretty sure it wasn't the first to do this, but I didn't many games back then and it was my next game after Doom, so being able to travel up a level, and bounce on trampolines was a big deal to me) and an updated version of this would be great. Now I'm not trying to say that you should remake the game, I'm saying that you could think back to some of the cool things that made it unique and you aim to put features in the engine that would allow for an updated version of Rott to run. If you were to make that remake of Rott what would you want the engine to be capable of doing? What tools would make working on that remake much easier? What feature stand out in your ideal remake of Rott that would make it stand apart? Things like unique weapons that do things with the engine that you don't really see.... like if you fire the rocket launcher and it is a direct hit on an opponent, right before the rocket hits the camera switches to following the rocket from the side and time slows down and the camera moves away a little and pans to show the rocket and the guy about to be hit, and as it impacts you get that classic 'bullet-time' slow-down and the camera rotate around the guy as he explodes in super slow-mo... but you only get this feature if you had a 10 kills streak without taking any damage.... Wouldn't this require a special feature of the engine to slow down time and add in smooth animations and not just the clicky movements you would typically get if you slowed down a 60fps animation??
      - I really don't know ANYTHING about programming or making games and have NO IDEA what I'm talking about.... I just wanted to give you a bit of inspiration if you're at one of those points in a project where you know what the goal is, and you know how to tackle all the parts, you just don't know where to begin.... That happens to me when making music sometimes.... electronic music that is.... I'll come up with a short loop with the instruments and drums I like, and it sounds good... but it's just the main loop... and I know how to start a an electronic music track ('drum and bass' to be exact) I just don't know if I wanna start from the very beginning and work forward, or make my secondary loops... it's like I get stuck in the calm before the storm.... and sometimes it helps when someone else gives me an idea.. SO I thought I might be able to give you a way to come up with an idea so you can work towards it - I know you'll get it all done in the end, and it'll be great... :D

    • @Nobe_Oddy
      @Nobe_Oddy 26 дней назад

      @@punpck they're actually a really good VPN I gave them a try and I liked the software and the tools that come with the vpn, but I went with another company because of the deal/price ... I couldn't pass up all the free time when you buy a few years... so I'm good until 2026 and I got it in 2021.. and I think I paid like $150 for about 5 years of vpn... I didn't need all the other tools nord offered and I preferred more time.... and a lot of vpn companies were offering a lot of free time like that back then, but they don't anymore.... I think they give 3 months for free at the most
      oh and the biggest thing was that the company I went with was PROVEN in court that they don't keep records of your history/usage OR your personal info... which really isn't a big deal to me, its not liek I'm doing anything nefarious, but I just liked knowing that they were honest about their claims...

    • @Nobe_Oddy
      @Nobe_Oddy 26 дней назад

      ALSO.... you looking for a sound guy?? I'm not some musical wizard or anything but I am great at sound design/atmosphere and creating original sounds/'sound fx' - I have a lot of VST/synths too, so it would be a totally original sound design for the game... it would be 100% unique .... :)

  • @PaintsAreOp
    @PaintsAreOp 27 дней назад +893

    "Have you ever wanted to learn 3D programming and build your own engine" Yes, but then I took a basics of graphics programming course at university, did a simple opengl demo with rotating cubes and spheres and moving lights and I don't want to do this anymore.

    • @PaintsAreOp
      @PaintsAreOp 27 дней назад +59

      What broke me was my smooth brain not understanding how to use 2 different shaders at the same time :( They draw on top of each others

    • @deltakid0
      @deltakid0 26 дней назад +103

      People are finally realizing how horribly difficult writing code is, it's like exchanging your mental and physical health for a vain desire that will fall obsolete and forgotten.

    • @vonweiss7149
      @vonweiss7149 26 дней назад +29

      ​@@deltakid0 ofc if youre gonna mess with matrices, graphics, shaders etc its gonna be very rough.

    • @guyg.8529
      @guyg.8529 26 дней назад +86

      Same here. Graphic programming is different than the rest of programming because it's full of maths, and APIs are quite complicated. And not full of maths in the nice way, it's not functionnal programming, cryptography/compression/ECC/encoding, nor algorithms, it's different. Mostly linear algebra, vectors, matrices and stuff, you have to love it. I sure don't.

    • @Lbf5677
      @Lbf5677 26 дней назад +12

      Don't even mention collision

  • @rekkimaru7
    @rekkimaru7 27 дней назад +406

    Yo! That's my ancient gun render!!! :D Glad it didn't go to waste xD

    • @ModernVintageGamer
      @ModernVintageGamer  26 дней назад +135

      thank you for it!

    • @martinrocket1436
      @martinrocket1436 26 дней назад +19

      Hey, are you maybe a graphics artist with experience in FPS? Then maybe you can contact MVG for a gig.

    • @rekkimaru7
      @rekkimaru7 26 дней назад +24

      @@ModernVintageGamer Thank you for making use of it :D

    • @rekkimaru7
      @rekkimaru7 26 дней назад +16

      @@martinrocket1436 LOL. I'm always looking for more work :D

    • @PlasticCogLiquid
      @PlasticCogLiquid 22 дня назад +1

      LOL

  • @rulerofallcheese2382
    @rulerofallcheese2382 27 дней назад +182

    I got into programming in the early 90's because making game engines (which wasn't a common term back then) seemed so cool. I grew up trying to copy half life's "hammer" editor and similar tools. I had to learn about matrix hierarchies to support skeleton based animations and matrix interpolation to support blending 2 animations like sitting down and drinking coffee at the same time. Good times.

    • @josephbrandenburg4373
      @josephbrandenburg4373 26 дней назад +3

      Matrix math good. Linear algebra good.

    • @kneesnap1041
      @kneesnap1041 26 дней назад

      Ugh I just spent a crap ton of time trying to reverse engineer a skeletal animation blending system only to decide that it wasn't worth it as I really only wanted to preview animations on their own without blending

    • @jstro-hobbytech
      @jstro-hobbytech 25 дней назад

      @@kneesnap1041 i used to port nintendo games to pc using visual basic just for shits when we got to pick projects or examples of certain rules. be obtuse as feck hahahaha. half my class quit when we learned recursive functions in borland c. a 100 level math course. killed me. i skipped the whole course and just did the labs and put a repository up of programs that people could just take then would delete themselves after 1 use. if they hit enter instead of print screen after the code ran then printed out the code it had ran. good way to drive people nuts. one chance to get free homework. 120 started 14 finished the degree hahahaha.

    • @Admer456
      @Admer456 17 дней назад +1

      Valve Hammer Editor my beloved

  • @Pixelmusement
    @Pixelmusement 26 дней назад +105

    Funnily enough, this is a topic I've been talking to a friend of mine about lately whom worked at Ubisoft as a programmer in the 2000s. He brought up the same point you did that knowing how to make a game engine is an invaluable skill that's in high demand with game studios, but the point I brought up is that it's a MAJOR undertaking which can easily double the workload towards making a game, thus it really comes down to whether someone enjoys programming more than the design process, or the design process more than programming. For me, I only learned to do it because I didn't really have much of a choice in the late 90s and early 2000s if I wanted to turn my ideas into reality. Nowadays, modern engines are so powerful and relatively easy to use that I much prefer working with them over building my own, but that's just because I prefer designing over programming! ;)

    • @PapiNewGunie
      @PapiNewGunie 26 дней назад +5

      Hey dude, you have a cool channel. I remember when you were developing a game using old (DOS I think) painting programs. That was pretty interesting and I hope you pick it back up.

    • @Pixelmusement
      @Pixelmusement 26 дней назад +7

      @@PapiNewGunie I doubt I will but I do still occasionally use those tools to assist with my modern gamedev stuff! :B

  • @martin_emrich
    @martin_emrich 26 дней назад +44

    Part of my university degree was indeed writing such a simple 3D game in a small team based on OpenGL in C++ in a software design lecture in 2004. Until today, that was the most useful course I had in 10 years at the university.

    • @halfbakedproductions7887
      @halfbakedproductions7887 21 день назад +1

      I did a computer graphics module as well. It was pretty enjoyable actually, even if parts of it got tricky (thankfully it was an optional module and he'd dialled down the maths)

  • @StriclySegaEurope
    @StriclySegaEurope 27 дней назад +141

    now, put it on Dreamcast!

  • @SlyNine
    @SlyNine 27 дней назад +166

    Delete default cube before it's too late!

    • @JohnDoe11VII
      @JohnDoe11VII 26 дней назад +7

      There is no default cube. In the void that is programming, the only thing default is your compiler of choice and the syntax rules of the language.

    • @Aeduo
      @Aeduo 26 дней назад +7

      replace with default suzanne

    • @marknunya3107
      @marknunya3107 26 дней назад +4

      Is that ONLY a Blender joke or is that industry wide? I been learning Blender for about a month

    • @hggohh4915
      @hggohh4915 26 дней назад

      I think autodesk Maya has a default cube too.

    • @charlesthomas5956
      @charlesthomas5956 23 дня назад

      @@hggohh4915 It does not, I've used that software before.

  • @MartinStuertzer
    @MartinStuertzer 27 дней назад +558

    "Have you ever wanted to learn 3D programming and build your own engine". HELL NO. But thanks for the video, it was super fun to watch and I learned a lot!

    • @billcook4768
      @billcook4768 26 дней назад +4

      lol. Well said.

    • @gfdgdfgdfgdfggfdgdfgdfgdfg9709
      @gfdgdfgdfgdfggfdgdfgdfgdfg9709 26 дней назад +6

      I wrote my own (vector) 3D engine in flash and another one in javascript. Was fun, wasn't that hard for simple games.

    • @oxoboo
      @oxoboo 26 дней назад +12

      I'm learning OpenGL right now, and there is a quite a lot to learn. Yes, I will be learning 3D programming. NO, I will NOT build my own engine.

    • @bluetooth2677
      @bluetooth2677 26 дней назад +1

      I would love to but honestly don't have time or attention to do it right now. I know how to use phyton.

    • @Aaronmac404
      @Aaronmac404 26 дней назад +2

      This.

  • @melficexd
    @melficexd 27 дней назад +64

    I started directly in VulkanAPI, and i have already gotten over the not so default cube. 😁
    Word of advice, Vulkan is a whole different world from OpenGL, is more elemental, but for some reason, i find it more gratifiying, especially when it works 😅.
    Good luck!

    • @ModernVintageGamer
      @ModernVintageGamer  26 дней назад +29

      im familiar with it.ive used in in commerical projects in the past

    • @josephbrandenburg4373
      @josephbrandenburg4373 26 дней назад

      I'm planning on using VulkanSceneGraph for a project. Any experience with it?

    • @harveysattic3918
      @harveysattic3918 26 дней назад +19

      Started with VulkanAPI? You have my respect holy smokes!

    • @W0lfenstrike
      @W0lfenstrike 26 дней назад +11

      That's like learning to ride a motorcycle before even touching a bike with safety wheels, lol

    • @dingusbringus74
      @dingusbringus74 11 дней назад

      If GL supported multi threaded command submission it would be a goated API. I don't want to deal with descriptors or image layout transitions or async texture uploads or semaphores or other understandable inconveniences. I just want GL + VK_EXT_descriptor_indexing + BDA and maybe mesh shaders.

  • @KyleHarrisonRedacted
    @KyleHarrisonRedacted 26 дней назад +21

    2020. That’s when I discovered my
    Love for graphics programming and core engine development. Wrote my own little raytracer engine, wrote my own 3d engine, nothing comprehensive but got the job done.
    And then I tapped out. Found there’s really not much callin g out there for graphics programmers at the low api level, and what “graphics programming” means today are shader monkeys. And that’s fine but it’s not what I was signing up for, nor was anyone looking for that. Indies, AAA’s, etc there were no teams to join. Starting my own and it was difficult just finding another programmer and even an artist. It just all got too frustrating to manage, and felt like my time was ultimately better spent elsewhere.
    But I loved it. I learned a ton. I might even come back to it one day.

    • @CrazyMetroid
      @CrazyMetroid 26 дней назад

      Maybe work on smaller projects on your own? Something to keep you busy and doing so you'll also be perfecting your skill little by little.

    • @JetBlackRage
      @JetBlackRage 26 дней назад

      That's a pretty common case and why the commercial engines like unity and unreal have become so popular! Sometimes you don't have the time and effort to take care of all the low level stuff and being able to easily on board someone with a common tool makes a world of difference. But good on MVG for learning how it works from the bottom as a bit of a fun side project. No harm in some knowledge

    • @yarpen26
      @yarpen26 25 дней назад +2

      It sounds both stupid and frustrating, but never follow a difficult hobby out of a career drive. You will likely give up on it sooner than you think. But if you create something hard just for yourself to marvel at your own genius... let's just say when I first put together an animation of legs walking in accordance with arrows pressed, I spent hours just staring at the screen in awe. I had never thought myself capable. Would there be any career or money out if it though? Hell, no. And that's okay.

    • @leonstone3443
      @leonstone3443 5 дней назад

      @@yarpen26 exactly! everything im learning is just a hobby and to keep my brain from going to mush. I genuinely find it more fun than just gaming during the week, i actually gain real life experience. I really dont even want a "coding" job cause then i'd end up hating it.

  • @TheFakeVIP
    @TheFakeVIP 26 дней назад +15

    Man, what a coincidence, just two weeks ago, the university computing society that I run met, and agreed that our big group project this year will be a 3D game engine, using SDL, OpenGL, and many of the same tools shown in this video! Thanks for giving me something to show the members, so that they know what we're trying to achieve through the first set of phases of development.
    For the interested, we plan to build something similar but ontop of the Flecs entity component system library.

  • @reversedgames
    @reversedgames 26 дней назад +14

    I'm not sure if you're aware, but SDL3 recently merged their GPU API abstraction implementation, which (IMHO) it's a much better idea than getting deep into DX12/Vulkan or even Metal. Console support is also taken care of (or will be soon, this is really recent), and it only requires a bit of a paradigm shift from OpenGL (actually very similar to what you'll have to do for the aforementioned DX12/Vulkan/Metal). I think it's perfect for what you're trying to build here. The FNA devs (who created the actual implementation) also have a very useful repo with very simple examples (not adding links because RUclips, but easy to find). Hope it helps!

  • @PhinioxGlade
    @PhinioxGlade 27 дней назад +13

    I made a super basic height map by loading a bitmap. The position of the pixel and the brightness was used to generate a xyz position. A second bitmap would apply colour. Depending on the surrounding pixels the polygon would need to segmented into smaller triangles to prevent distortion..
    All coded in C with OpenGL glut toolkit

    • @vinhdev6803
      @vinhdev6803 26 дней назад +1

      Yooo that's cool dude, but was it really optimized when running on a bigger bitmap? I mean, loading all of that as independent meshes is quite an expensive task.

  • @HypnoGenX
    @HypnoGenX 26 дней назад +8

    As someone who has done precisely this, back when Vulkan had just come out, it's amusing to see it distilled down into a ten minute description. It did not take ten minutes to actually DO these things. :p

  • @XErox7X
    @XErox7X 26 дней назад +10

    9:55 Just blew my mind. Like really lighting makes such a difference. Your video and engine really makes me want to make my own game. Thank you so much Mvg, you have relight my inspiration to create art.

  • @adamnaser
    @adamnaser 27 дней назад +13

    Consider implementing the billboard sprites with stacks so there'd be some local parallax. It's a really neat effect you didn't see too often because it was quite expensive (I don't think I've ever seen it in an FPS, mostly just shmups). I think it'd end up looking almost like Duke Nukem 3D, but with some more sophisticated sprite effects
    There's also plenty of tools (not all are open) to build sprite sheets out of voxel models to make things a lot easier. Including baking lighting, or various normal maps so lighting could be applied in real-time to the sprite sheets (also don't forget edge lighting, it'll make things look amazing)

  • @theratcometh9866
    @theratcometh9866 27 дней назад +17

    You've always been a really good narrator and coder. When u have stuff like this i end up breaking out my popcorn.

  • @SamK4074
    @SamK4074 25 дней назад +2

    This video dropped in the nick of time; this is the motivation I needed to continue learning to write a 3D engine for the PlayStation 1. I have a simple spinning texture-mapped cube on the screen already but I wasn't sure exactly where to proceed from there. Making a 3D engine isn't something I've done before, let alone one for the PS1, so I'm partaking in quite the learning curve. Thank you for the video!

  • @JohnSmith-xq1pz
    @JohnSmith-xq1pz 27 дней назад +65

    "Come get some!" Retro game engine

    • @Ohthatguy64
      @Ohthatguy64 27 дней назад +1

      Where is My Sonic Mania Origins Plus?

    • @MrParkerlewis81
      @MrParkerlewis81 26 дней назад +2

      Hail to the king, baby.

  • @MrPoselsky
    @MrPoselsky 27 дней назад +4

    I love the new movement of people sharing their engines! It's so important to learn new stuff and how these things work in the background.

    • @tobyzilla
      @tobyzilla 26 дней назад

      Yes and to keep the spirit of makeing a game with love and passion

  • @graphicsgod
    @graphicsgod 27 дней назад +14

    No mistakes were made in this episode.. 👏👏👏

    • @prologik85
      @prologik85 26 дней назад

      They're about to be made. haha

  • @szabotudor
    @szabotudor 26 дней назад +6

    I've been working on a custom 3d shooter game engine for over 2 years now, and I gotta say, the graphics are the least of your "problems"
    I'd say that I spent less than a quarter of the time on graphics, and most time was spent on things like a custom ECS to help with having large numbers of enemies and moving objects, scripting api that's easy to use by designers, level editor, and platform abstraction
    Very good video for beginning work on an engine tho!

  • @SomeRandomPiggo
    @SomeRandomPiggo 26 дней назад +1

    Nice to see you making videos on this topic! I've been writing toy engines in OpenGL and C for 1.5 years now, it's been very fun and I recommend it to anyone who has an interest in making games. It teaches you how things are done in commercial engines, what is efficient and how much you can achieve with cheap techniques

  • @WrestlingWithGaming
    @WrestlingWithGaming 26 дней назад

    Congrats on the progress so far. It's amazing what some well-placed lighting will do. It's always captured that old-school boomer shooter aesthetic while still looking like something modern.

  • @ivankocienski1
    @ivankocienski1 25 дней назад

    Ooo good video. I wrote my own 3D engine from scratch a about 10 years ago but I started with a blank framebuffer and wrote all the line rendering, line clipping and 3D projection stuff on my own. Really makes you appreciate what Carmack, Silverman et al were up against

  • @gudenau
    @gudenau 27 дней назад +9

    I'm working on my own game/engine right now, it's Java based and currently only supports Vulkan with the ability to swap it out via plugins and command line flags. My current task is text rendering, which is always a pain.

  • @Xizilqou
    @Xizilqou 25 дней назад +1

    Absolutely love to see people making custom engines for games

  • @manoelBneto
    @manoelBneto 26 дней назад +53

    Pro-tip: If you intend to port your game/engine to consoles, do not use GPL/LGPL licensed libraries since they have requirements which are incompatible with closed platforms. Some versions of those licenses can't even be used with iOS, since the user cannot replace libraries themselves.

    • @webmonkey44
      @webmonkey44 26 дней назад +7

      you want to confirm the LGPL claim. its explicitly to make allowance for use as a library in non opensource code AS long as you make the library source code you used available for download and disclose that.

    • @manoelBneto
      @manoelBneto 26 дней назад +13

      @@webmonkey44 From section 4 of LGPL:
      "You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications."
      This means end-users must be able to replace the bundled LGPL libraries themselves, which is not possible on consoles.
      It's important to remember that GNU licenses are political in nature: they exist to push Free Software and undercut Private Software. Closed platforms like video game consoles are seen as "the enemy" by the GNU foundation. Their article titled "Why you shouldn't use the Lesser GPL for your next library" explains the reasoning behind the LGPL existence.

    • @JoaoPedro-ki7ct
      @JoaoPedro-ki7ct 26 дней назад +5

      You/he could also dual license to whatever license he chooses so long as he is the copyright owner of the portion of the code he wrote (or acquired the copyright to the portion of code the third-parties contributors wrote, through payment properly or an agreement).
      Presumably he can choose as many licenses as he wants to.

  • @xdradt8463
    @xdradt8463 27 дней назад +14

    Maybe this will get me to finally start learning on how to make a Quake clone natively for PowerPC and Linux.

    • @xdradt8463
      @xdradt8463 27 дней назад +2

      @@YoureUsingWordsIncorrectly Thank you for letting me know. Do you have a link for it?

    • @pimpstick2
      @pimpstick2 26 дней назад

      @@xdradt8463 quake2RTX, it already has an ARM port.

    • @amirpourghoureiyan1637
      @amirpourghoureiyan1637 26 дней назад

      Fodquake, DarkPlaces and Quakespasm support PPC and Linux - the source code repos are online too

  • @davidcbeaudoin
    @davidcbeaudoin 26 дней назад

    Looking good so far! I've started and stopped building a game engine at least six times in the last several years. Every time I go back to it, I always start over because I figured out ways to do something more efficiently and more or less forgot where I left off on the prior build. Clearly I'm more about the journey than the destination.

  • @trainedtotroll9385
    @trainedtotroll9385 26 дней назад +4

    Engine looks good. I’ve been building one in Java for the past year and a half. I built an editor, rendering pipeline with lighting and shadows, added bullet physics, and I’m about to start implementing game (world) entities using ECS. Not to mention that I also built the networking engine first using Netty. I got a login server and game server with working BCrypt authentication. I’m just a hobbyist and I’ve had 0 programming jobs. I’d love to have one though! It’d help my family out tremendously!

    • @vinhdev6803
      @vinhdev6803 26 дней назад

      That is just soo impressive, I am looking forward to try coding a 3D renderer in C++, which rendering pipeline (OGL, Vulkan, etc...) do you think is best for a beginner? I really can't trust online sources that much.

    • @trainedtotroll9385
      @trainedtotroll9385 26 дней назад

      @@vinhdev6803 well OpenGL is end of life. I’d place my bets on vulkan. I’d look and see what the big engines are using and see if theirs a common denominator.

  • @jamesmerritt3961
    @jamesmerritt3961 26 дней назад +1

    super cool. I'm so outside of the competency required for a project like this but I appreciate the ease with which you break it all down.

  • @therealswarvey
    @therealswarvey 26 дней назад +1

    I hope this becomes a series, it would be interesting to follow along with development

  • @NickEnchev
    @NickEnchev 25 дней назад

    I would also recommend doing instancing since you have a ton of repeating meshes. You can push the matrices of each wall block into a buffer and send it over to the vertex shader as an array, then index into it with the gl instance ID. Its quite a bit more flexible than putting all the vertex data together into a large static mesh, and its still just a single draw call.

  • @nathantron
    @nathantron 25 дней назад +1

    I want to see you go into detail on this, and also add more. Please make a series.

  • @locki_dos
    @locki_dos 27 дней назад +41

    3:55 I am telling you right now you are not going to use vulkan unless you are very significantly aware into graphics programming and probably have a team who are also significantly aware into graphics programming (especially if you are wanting to do it in a far moe reasonable time). And I mean Significant, not just the pipline, etc. you need to know hardware. Since the Vulkan api is less of an api like openGL and DirectX are and more of an api to make your own graphics api (hyperbole but genuinely you have to do p much cross every 't' and dot all your 'i's.
    There is a reason why even companies like valve struggled to get Vulkan to be in a performant state in Source 2 for years.
    Not to say you can't do it, it's just word of warning since it will take ALOT.

    • @nasso_
      @nasso_ 27 дней назад +13

      yeah vulkan is really just for the big studios to squeeze the extra 10% they can squeeze out of each hardware device
      for portability i would recommend a webgpu implementation like wgpu or dawn, which is arguably lower level than opengl, more in-line with modern APIs, portable, but most importantly sane to use

    • @paliszarok
      @paliszarok 26 дней назад

      just use opengl, webgpu is instable and doomed to fail

    • @natese8406
      @natese8406 26 дней назад +10

      I disagree. His framework is simple and he comes form a C background where knowing the hardware is expected. Vulkan and DirectX 12 are the future of gaming and they both expect more of the developer. OpenGL and DirectX 11 are obsolete because they struggle to perform. In a way Vulkan and DIrectX 12 mark a return to a time before API hand holding. This return will be a culture shock for many modern devs, but progress is inevitable. C and C++ developers will likely rejoice in this. MVG comes from such a background. MVG is likely excited to port over to Vulkan and is just working OpenGL to prototype before the real work begins.

    • @guyg.8529
      @guyg.8529 26 дней назад +6

      @@natese8406 Vulkan is so low-level it can't replace Direct X 11 or Open GL. In fact, you can implement Open GL/Direct X 9/10/11 on Vulkan/DX12, which mean both are needed. High-level API, if modernized, are clearly valuable for modern programming if they rest on lower-level APIs. Nowadays, even in AI and other computationnaly intensive programms, most people use Python completed with C libraries. 3D rendering should do the same but with APIs. What's the point of using your own memory allocator in Vulkan ? Most people don't care, most games don't nedd it.

    • @ModernVintageGamer
      @ModernVintageGamer  26 дней назад +33

      i have experience with both Vulkan and DX12 with commercial projects ive worked on. overkill? sure but it opens up a path to console ports

  • @OmegaPhlare
    @OmegaPhlare 26 дней назад

    Thanks for making and showing this off. I am capable of doing something like this myself, but I haven't used my skills in a long time. Watching your game run smooth and look great with very little geometry inspires me. It makes me want to go start a new project or work on something I have unfinished.

  • @jinchoung
    @jinchoung 27 дней назад +12

    VOXEL OBJECTS! doesn't have to be voxel engine based but the kind of enemies and objects in voxel doom seems like the sweet spot with retro look while having the advantages of 3d geometry.

    • @jlebrech
      @jlebrech 26 дней назад

      use vox file for the editor instead... and one thing you can do is have LOD5 be a standard vox file and as you get closer to voxel it loads the LOD4-1 assets.. kinda the way enshrouded does it.

    • @halfbakedproductions7887
      @halfbakedproductions7887 21 день назад

      C&C Tiberian Sun used voxels to great effect. It was a pretty uncommon and perhaps unique visual style at the time (certainly the first time I'd ever seen it), felt very advanced, looked great, was basically just "pretty cool". It's not something I've seen in abundance ever since.

  • @VastLite
    @VastLite 25 дней назад

    My first real experience with opensource shooters was Cube 2: Sauerbraten. If you're asking what your viewers would want to see, I'd say something along the lines of that. Sauerbraten uses fairly simple 3D models for enemies and weapons. It also includes a co-op map editor, which was my bread and butter back in the day. The networking code was largely forgiving, which saved me (me being on satellite internet at the time, in the middle of nowhere) and allowed me to co-operatively contribute to levels with the friends I made while playing. I wasn't so much into its competitive modes, but occasionally I would try to play capture the flag on some of Sauerbraten's Quake-inspired maps. It's mostly still going today, if you ever wanted to check it out, and like I mentioned, it does happen to be open source.

  • @OwtDaftUK
    @OwtDaftUK 27 дней назад +4

    Just adding transparencies for the tiles would probs open up a lot of possible detail alone.

  • @seedmole
    @seedmole 27 дней назад +2

    Nice! I messed around with similar things, but in a graphical programming environment that was mainly made for audio design, called Pure Data. It has its default library, plus one for simple physics calculations, and one for OpenGL rendering. Trying to figure out how to implement different features was super interesting. I kinda stalled out when trying to figure out a way to implement heightmaps, also took a huge detour into the world of fragment and vertex shaders.. but I can't even begin to describe how much I learned in the process.

  • @Hobo_X
    @Hobo_X 27 дней назад +2

    I'd love to see you do a big video walkthrough of actually creating the engine to the level of this video (and showing it all, basically doing it again a 2nd time for a recording) - if you didn't mind open-sourcing just up to this point. I find follow-alongs so much better for learning where I have a finish line I can see that I'm trying to recreate (the finish line being your repo)

  • @lukesfilmltd
    @lukesfilmltd 7 дней назад

    pretty much have built out my own game engine editor now. I was inspired years ago when Tim Sweeny said something along the lines of " if you don't want to pay the epic fee's make your own engine". Would love to have a convo sometime!

  • @snesmocha
    @snesmocha 22 дня назад

    i've been working on my own custom engine as well. glad to see other people working on their own engine

  • @awright18
    @awright18 26 дней назад

    As a non-game programmer, I found this video inspiring. It's always great to see your vision in your head start to take shape. It's likely lots of people will see this and take the plunge. Great work, great video, and I can't wait to see what's next.

  • @SpentAmbitionDrain
    @SpentAmbitionDrain 27 дней назад +2

    I hope you keep posting a dev log. Would be interesting to see how you are progressing. Maybe go a bit deeper next time?

  • @SorrellDev
    @SorrellDev 25 дней назад

    RenderDoc and ImGui are probably the single most important graphics programming tools one can have when building anything from toy projects to AAA titles. Great video and here's hoping this inspires a whole new generation of graphics programmers! With how complex realtime rendering tech is becoming, we'll certainly need as many hands on deck as possible.

    • @halfbakedproductions7887
      @halfbakedproductions7887 21 день назад +1

      ImGUI can require a lot of legwork and 'plumbing', but it's oh so useful once you have it set up.

  • @Rafa-Silva-Alt
    @Rafa-Silva-Alt 26 дней назад +1

    Cool series. I'm in for the ride, want to see this slowly become a full game.

  • @Rorybabory
    @Rorybabory 26 дней назад +1

    It looks cool! One recommendation would be to write a parser for trenchbroom (the quake editor) or a similar 3d editor, so that you can have more variation in your environments.

  • @royalcities
    @royalcities 26 дней назад +1

    this is really cool dude. Haven't made an engine but I do do programming and music production and get the sheer joy from creating.
    You mentioned wanting to bring artists on board for sprite work but if you ever needed sfx or music lmk and I'd love to help where I can.
    can't wait to see how your engine comes along.

  • @Tenry92
    @Tenry92 26 дней назад

    Really impressive! I'm also currently working on my own game engine using C++ and different renderer backends, including OpenGL. I design my game engine to be highly portable, so it would also run on some homebrew targets such as the Nintendo 64 or the Nintendo DS (in fact it already compiles for the N64 already). My engine supports both 2D and 3D simultanously, but is still in an early state. For example, I still need to implement/improve 2D tilemaps, advanced text displaying but also a lot of 3D stuff such as shadows, reflections etc. Oh, and of course sound and music :)
    I'm looking forward to see how MVG's engine is going to evolve and I'd be very interested to see more of the source code, how things have been implemented. Keep it up!

  • @kevinleguillouklg
    @kevinleguillouklg 26 дней назад

    I'd love more details on the bad stuff you encountered when implementing all the things a game engine needs. Like if there are stuff you changed or ditched for technical reasons, or any concepts that you realized you might have done another way, to simplify the way you build upon your engine, etc.
    Ever since your video about Gameboy dev, I've gone down the rabbit hole of so many gamedev subjects. This is the kind of things that makes you spawn a ton of sideprojects, I hope I'll push out something one day 😅
    Thank you for making these videos

  • @flyinghighstudios1700
    @flyinghighstudios1700 26 дней назад

    Yo man, you're one of the OG's, you inspired me to build my own softmodded original Xbox that I'm planning on upgrading the hard drive here soon. Please keep me in the loop about the game, I'd love to see you port something like this project out for the original Xbox, you're awesome mate!!!

  • @ZILtoid1991
    @ZILtoid1991 27 дней назад +2

    I used D to write my own 2D game engine, originally with CPU rendering, but soon that will change. Originally I used SDL, but found many things about it very unideal, so I started to write my own solution, although I'll be using their controller mappings to get controllers working with RawInput and libevdev.

  • @jstro-hobbytech
    @jstro-hobbytech 25 дней назад +1

    Awesome MVG! i've played around with those tools a bit too but got as far as the triangle rotating haha. I used the same site as well. Learn by doing ehh. I've been spending more time writing music for a metal ep im making for myself, not to be released so i can have something for all the thousands of hours of practice i've put in and while i'm still getting better (almost 46). I noticed an ltd in background of your old vids and wondered what bands you're into brother being we're around the same age.
    you're an inspiration and i plan to get back to my opengl project eventually. i was gonna start with a simple boomer fps block pushing game. i'm also in the middle of writing a score for a series of fun horror movie shorts with a friend to learn practical effects and bolster up his resume for voice work. i was thinking lots of homemade synth circuits and arpeggiated harmonics using my expresion pedal to bring everything in and out. kinda like halloween 3 but with guitar added with the sequencers. that movie has a killer score. if you ever need any free voice work, i'm sure my friend would do it and any music compositions masters and midi conversions for free in your name as i'm sure you're a busy man and i'm bored and dont need credit or money. i have alot of free time and it would be nice to be a part of something bigger than myself or to be relied on. i havent been paid to code or do music in a very long time and just being able to contribute to something would be reward enough, without recognition. you've done alot for the community while working a very busy job and you are always positive an never get caught in the muck and mire that can go on here on the platform.
    keep up the good work. im interested in your obscure metal band affinities the most. you look like a fan of the tampa florida metal scene from the late 80s and early 90's. haha.

  • @babababa201
    @babababa201 24 дня назад

    You are operating on an entirely different level to the rest of us. Genuinely incredible stuff.

  • @bloodysoma4854
    @bloodysoma4854 25 дней назад

    I'm currently taking a graphics basics class as part of my CS university degree. We have to build our own openGL like library in C++. As a passion project, I'll try to build a game engine afterward with it. So that video was very on point! In future updates I'd be very interested in how you created your editor, where you can drag and drop game objects in your scene, and how you take that information to process it in 3D afterward.

  • @killymxi
    @killymxi 26 дней назад +2

    Seeing single awkward gun reminded me of the game, a Wolfenstein-like shooter, that I dream to see re-released with some balance fixes.
    It's Escape From Monster Manor, from 1993.

  • @dbbgba
    @dbbgba 26 дней назад

    It definitely needs particles, fog, maybe volumetric area fog so you can have some room very foggy next to others fully clean. Oh and transparency, as a graphic artist even the most binary of transparency is a godsend to create assets!
    I'm imagining a shooter that renders to infinity, every pixel you see in the horizon you can reach. That's probably a data nightmare to deal with though!

  • @altiereslima
    @altiereslima 26 дней назад

    Also keep the option to set the scene to a low-resolution look to match the resolution of the hand with the weapon. It gives a more retro appearance.

  • @apollolux
    @apollolux 26 дней назад

    I remember a few years ago (maybe 2015 or so) I found some fairly old (but recent for that time, no older than 2008/2009 I would say) multipart article on Microsoft's developer blog about the maths involved in rendering 3D in a 2D space (there was some 3d monkey head model involved as the example). This was right after I finished taking matrix algebra in college for my computer science bachelor's, so not only was the formal education still fresh in my mind I actually understood the article for a change as I was going through it and implementing its matrix multiplication techniques involved in transforming the 3D points to 2D space for creating a barebones software renderer to play around with. I wasn't yet interested in optimizations like unseen surface culling, z-ordering, etc for speed back then, so I didn't go very far beyond that article technique-wise, but at least I found a useful, relevant purpose for matrix algebra.

  • @trinitybingham2406
    @trinitybingham2406 23 дня назад

    The modern vintage game engine. It's inherently got a cool name lol
    I've often thought about game development and buckling down and tryna learn it. Maybe I'll do that while I'm waiting to see the release version of this. Absolutely amazing work, man. You never cease to impress and amaze me.

  • @Standbackforscience
    @Standbackforscience 26 дней назад +1

    Love this - work in industry myself, it's tragic how so many studios are converging on the two big proprietary engines. Most of the coders I work with have no idea how to make a useable engine, they can render a cube really fast, sure, but making a practical engine that artists can work in, that skill is fast disappearing. Everyone wants to be a Carmack, when what we really need is Romero's.

    • @josephbrandenburg4373
      @josephbrandenburg4373 26 дней назад +3

      And with Unity's recent blunder they took a big hit, so even more of the market is using Unreal.
      Unreal is so janky. I don't think it is a good base for *every conceivable game* the way it is being used.

    • @yarpen26
      @yarpen26 25 дней назад

      ​@@josephbrandenburg4373The AAA market uses either Unreal or their own or loaned proprietary engines. Unity is indie-exclusive.

  • @DrTheoreticalDonuts
    @DrTheoreticalDonuts 26 дней назад

    Copy elision is such a rad feature. Happy to see it in use here.

  • @madfinnishgamer38
    @madfinnishgamer38 27 дней назад +1

    Seeing this video reminds me that I was going to code my own game engine with similar goals once. It might yet happen one of these days.
    If this ends up turning into a full-fledged game and you need a music guy, I'm up for the task. c:

  • @guspaz
    @guspaz 26 дней назад

    Fixed-floor-height tile-based maps will be incredibly limiting. Even if you want to stick to a tilemap, variable height floors will make a big difference in potential map complexity. You can also do some cheats to make it a lot more flexible. Straight angled walls can still be defined in a tilemap (for example, tile types for 45 degree angle walls), and while rooms-above-rooms is too much for this sort of setup, some very basic portal stuff can let you simulate it enough to create far more interesting maps.

  • @TyrKohout
    @TyrKohout 26 дней назад

    If you need sound assets (music, explosions, ambience, connecting bits, abstract FX) please get in touch! This project looks great and would be happy to be involved in creating audio for it. My background is in electronic music production and recording, with a focus on sound design especially. Good luck with the project, MVG!

  • @ClassicGameHacking
    @ClassicGameHacking 26 дней назад

    Thank you for this preset to everyone, is truly a gem.

  • @michinorobotto
    @michinorobotto 26 дней назад

    Nothing wrong with open-sourcing prototype code early. Given your community, you will be surprised with the amount of people that would be interested in contributing and helping you build this, including porting it to different APIs like DirectX and Vulkan :) Good luck with the project. I am more into Odin these days and having a bit of a mid-life C++ hate phase, lol, but I am still interested in following your project. Keep up the good work 💪

  • @majoraslayer64
    @majoraslayer64 26 дней назад

    This is giving me flashbacks to playing with UnrealEditor in 2005 to make custom Unreal Tournament 2004 maps. I never quite got the hang of lighting placement and getting my map ideas to scale comfortably.

  • @kylebowles9820
    @kylebowles9820 26 дней назад

    Pssst MVG use the halfway vector for your glossy specular.
    Imagine diffuse as cosine distribution about N vector, as you crank up gloss it begins to lean into the H vector and narrow, then once you're at 0 roughness its an extremely narrow spike at the R vector. I also like to narrow the distribution with the Schlick approximation to achieve the Fresnel reflection effect.

    • @Ali-Britco
      @Ali-Britco 20 дней назад

      Pssst, commenting so I can come back to this later, thanks !

  • @3dkiwi920
    @3dkiwi920 26 дней назад

    Dude, SICK! I'd say take it to a place somewhere between quake and quake II, simple skeleton rigs for characters and weapons, combined with slightly higher res textures and you've got a fast FPS engine that will run on anything, I'd make a game for that!

  • @TheCynicalAutist
    @TheCynicalAutist 26 дней назад

    I don't ever plan on becoming a programmer, I just love your breakdowns.

  • @lolindirlink
    @lolindirlink 26 дней назад

    An editor! With that, getting rid of tiler and making leveldesign even more seemless and bloat-free! Add some online sharing platform and you've got unlimited gameplay in a single package. Updates, especially when the engine is in public use would also be exciting to both players and creators.
    Regardless, I think editors are just really cool lol.

  • @Tim.Stotelmeyer
    @Tim.Stotelmeyer 24 дня назад

    Many years ago I wrote a 3D object editor and viewer in C++ and used GDI calls to render the images. No fancy OpenGL for me. I worked out the math to rotate the objects about their personal axis and the world axis.

  • @Lyvarious
    @Lyvarious 26 дней назад

    I remember the 'fun' I had with creating WADs and getting the hang of DEU and then Doom Builder later on, yes I'm old. Some of the quirks and limitations of ID tech 1 nearly made me despise the whole process, despite knowing that game engines had moved far and beyond that point already. We're talking between 2004/2008 or so.
    Seeing MVG seemingly slap together a proof of concept game engine + dev tools is getting me excited all over again. I'd love to see how this matures as a project

  • @danielberrett2179
    @danielberrett2179 26 дней назад

    Good Luck and Have FUN with project Rewind

  • @YoManRuLz1
    @YoManRuLz1 26 дней назад +1

    I'm looking forward to a follow-up video of this running on an original xbox!

  • @donkeyy8331
    @donkeyy8331 27 дней назад +2

    This is super nice and looks quite good imo! How long have you been doing it? I've started a CPU raytracer project this weekend and got a plane and spheres on the scene rendered, will try and add some shadows rays and reflection soon.

  • @silver1407
    @silver1407 26 дней назад

    I'd love to see this turned into a series!

  • @jagd_official
    @jagd_official 27 дней назад +2

    generally the best practice is to make a game and just develop the engine as you go. At least that is my own method. Also congrats on gathering such following, pretty impressive since programming projects on youtube go under the radar

  • @tonberryhunter
    @tonberryhunter 25 дней назад

    You should get rid of the white pixels around your gun png. This can be done in Photoshop using a black under layer to find and remove the white pixels. There are other tricks to remove them faster as well instead of pixel by pixel.

  • @esk_tr0jan
    @esk_tr0jan 26 дней назад

    I think putting it open source now would be the most educational so we can follow your progress more closely and learn from it from the start.

  • @mahkhardy8588
    @mahkhardy8588 26 дней назад +1

    Might be the best way for me to learn C++. Saving for later.

  • @GhostOfLorelei
    @GhostOfLorelei 25 дней назад

    Love the idea of sprites for characters/monsters and 3D for the map. Feels very boom shooter to me. Was my favorite way to play Prodeus.

  • @ProtoDeVNan0
    @ProtoDeVNan0 25 дней назад

    I had no idea that those creepy looking games attached the light source to the player. It creates a really cool look!

  • @SinisterPuppy
    @SinisterPuppy 27 дней назад +1

    Thanks for sharing, bet it's been fun making everything from scratch. Personally, I find 2D billboarded spite enemies and objects to be timeless.

  • @Toddimyre
    @Toddimyre 26 дней назад

    Wow. This is really awesome. I'm excited to see where it ends up. On a side note, it would be pretty cool to see how this progresses (engine and game) over time. Thank you for the video as always.

  • @siwone532
    @siwone532 24 дня назад

    You really should consider using Trenchbroom as the level creation workflow. It would allow for much more interesting levels while allowing you to define game objects in the level editor so that you can spawn them in once the level is loaded in the engine.

  • @Whatnoww
    @Whatnoww 23 дня назад

    Thank you for providing a real and honest VPN advert.

  • @powerfulaura5166
    @powerfulaura5166 26 дней назад +2

    It's great that your engine was created w/ free/libre & open-source software (F/LOSS) tools & APIs, but I hope you yourself will pass on that end-user freedom/liberty you benefited from to your own users by open sourcing the engine should you plan to commercially distribute a game w/ it.

  • @chees502
    @chees502 27 дней назад

    Y up, True man of culture.
    It's been over a decade since I have worked on a custom engine, and this video has sparked a little curiosity in me. Great video!

  • @LunarcomplexMain
    @LunarcomplexMain 26 дней назад

    I think it would look pretty kool to have mostly 2D objects like enemies, items, etc be displayed against all the simple 3D geometry, kinda similar to Octopath Traveler, just with some really good lighting and blending to make it all look nice together.

  • @fortayseven
    @fortayseven 26 дней назад

    I have always been a fan of the quake map editing tools just for the ease of use. It's not too hard to implement especially considering you don't have to build an editor. Even if you are set on a tile system, you could make 3d tile sets which would allow for more detail. I did start to make a 3d tile based system similar to Legend of Grimrock, but admittedly it does get complicated real quick as you want to add more options. I didn't think of it before, but Barony also uses this type of 3d tile system too and is a far less complex example vs Grimrock.

  • @multicoloredwiz
    @multicoloredwiz 26 дней назад

    This is what programming is all about, having fun making something to satisfy your own curiosity

  • @vinching926
    @vinching926 26 дней назад +1

    Maybe I'm crazy but I'm feeling that 3D Maze screensaver recreated with your engine could be interesting

  • @singletona082
    @singletona082 26 дней назад

    Features I want to see you impliment since it'd be interesting to see in a boomer shooter. Ignore or not as you wish.
    I like the idea of bilboarded enemies with 3d objects for the enviroment. Possibly include light sources for some of those objects?
    Maybe also have the ability to put sprite based objects? So you have 3d models such as desks or partitions, or the like, but also have bilboarded sprite based objects for powerups, keys, weapons. IE 'we want the player to notice this so make it look like sprites rather than part of the level.'
    * The ability to have instead of levels, a set of level chunks/tiles that can be combined at specific transition points so you can have differing layouts of a specific level (example: creepy storage warehouse) that ca nbe gone through repeatedly without the player mentally checking out on repeated runs. Warframe does this to great effect.
    * Either pre-mission opening text or expand that out to include essentially any pre-mission media be it a FMV, still images with text overlays, or still image/text with audio that plays alongside. Bonus if you can do still images the player can cycle through or cycles to synch with audio. IE how strife handles 'cutscenes.'
    * May as well ask if you can do how strife has interactions with objects beyond 'punch it until it dies, shoot it, or punch switch to make it do a thing.' IE inventory, currency, and talking with NPCs and giving the player options. Look this is my wish list.
    * I want ot know how level hubs work. Example being the lobby of a building wehre you enter an elevator that takes you to diffrent floors (levels) but that lobby itself can always be returned to.
    * Ending Screens. IE game end conditions met. Do you just have it cheat and the end credits be a 'level' where the ending is a pre-level FMV/series of screens that dumps the camera into a fixed point staring at a credits texture cube?

  • @glitchered
    @glitchered 25 дней назад

    cool startup. :D lil tip: match the rendering resolution of the 3d to the pixel size of the 2d elements aka the weapon sprite. looks more coherent and retro. ;) i prefer a kinda 4x4 pixel size on 1080p. close to psp resolution. the common res is 360p and it does upres to whatever 16 by 9 and looking retro. also nearest filtering is a must. :)

  • @danielg9275
    @danielg9275 27 дней назад +5

    project rewind FTW!