GamesWithGabe
GamesWithGabe
  • 198
  • 5 157 995
I Coded a Video Editor (and it kind of sucks)
I was using Manim to create animations for my latest video when I ran into a bug. This bug was very small, but caused a visual artifact that was driving me crazy. I reached out and was informed that this was a known bug, and unfortunately there is no fix. I said to myself, "Fine I'll live with it", but I couldn't. So I set out to code a video editor over my weekend, and here I am 8 months later with my shiny video editor that was an absolute pain to use to make this video. Hopefully you enjoy my overview of the process.
Source Code: github.com/ambrosiogabe/MathAnimation
Font Rasterization: czcams.com/video/LaYPoMPRSlk/video.html
Aarthificial Video: czcams.com/video/WTUafAwrunE/video.html
Drawing 3D Lines: mattdesl.svbtle.com/drawing-lines-is-hard
Drawing Bezier Curves: ciechanow.ski/drawing-bezier-curves/
Order Independent Transparency: casual-effects.blogspot.com/2015/03/implemented-weighted-blended-order.html
The O-Library: github.com/kkos/oniguruma
Join the Discord: discord.gg/4tHeAkxNg7
Follow me on Twitch: www.twitch.tv/gameswthgabe
---- Bookmarks ----
0:00 Intro
0:46 Write-In Animation
3:09 Coding a Timeline
3:41 Morphing Animations
5:33 Audio Waveform Previews
7:15 Adding 3D Support
8:27 LaTeX
10:02 Viewports and Gizmos
10:57 Optimizing Stuff
14:12 SVGs
15:45 Scripting
16:13 Code Highlighting
---- Music ----
All the songs are from CZcams Studio Audio Library unless noted otherwise:
"The Curious Kitten", by Aaron Kenny
"The Plan's Working", by Cooper Cannell
"Quincas Moreira", by Siestita
"Looping Ascent", by Joel Cummins
"Tiptoes", by Myuu
"Sprightly Pursuite", by Cooper Cannell
"Amazing Plan", by Kevin MacLeod
"Dreams Become Real", by Kevin MacLeod
---------------------------------------------------------------------
Website: ambrosiogabe.github.io/
Github: github.com/ambrosiogabe
Here are some books I recommend if you want to learn about game engine development more thoroughly. I do not profit off any of these sales, these are just some books that have helped me out :)
My Recommended Game Engine Books:
Game Engine Architecture: www.gameenginebook.com/
Game Physics Cookbook (Read this before the next physics book): www.amazon.com/Game-Physics-Cookbook-Gabor-Szauer/dp/1787123669
Game Physics (Ian Millington): www.amazon.com/Game-Physics-Engine-Development-Commercial-Grade/dp/0123819768
Game Programming Patterns (Free): gameprogrammingpatterns.com/
My Recommended Beginning Game Programming Books:
JavaScript Game Design: www.apress.com/gp/book/9781430247166
My Recommended Java Books:
Data Structures/Algorithms: www.amazon.com/Data-Structures-Algorithms-Java-6th-ebook/dp/B00JDRQF8C
LWJGL (Free, but I haven't read this thoroughly): lwjglgamedev.gitbooks.io/3d-game-development-with-lwjgl/content/
zhlédnutí: 230 641

Video

Textures in OpenGL | How to Code Minecraft Ep. 4
zhlédnutí 94KPřed 2 lety
Join the Discord: discord.gg/4tHeAkxNg7 Follow me on Twitch: www.twitch.tv/gameswthgabe In this episode I go over textures in OpenGL. There are several different ideas related to textures. Some of the concepts I go over include things like mipmapping, anisotropic filtering, texture sample filtering and more. By the end of this episode, you should be able to create a small field of cubes if you'...
BigO = Performance! And other lies programmers tell themselves!!
zhlédnutí 114KPřed 2 lety
Have you ever analyzed your algorithm and found out that it runs in O(n^2) and thought to yourself, "man I'm a crappy programmer...". Well, you are! But not for the reasons you think! If you think Big Oh = performance, boy have I got news for you. In this video I try to dispel this fallacy that programmers have assumed, that Big Oh complexity equates to performance. My Benchmarks: gist.github.c...
Adding Multiplayer, Colored Lights, and More | Coding Minecraft Devlog #2
zhlédnutí 366KPřed 2 lety
Join the Discord: discord.gg/4tHeAkxNg7 Follow me on Twitch: www.twitch.tv/gameswthgabe Watch my brothers video of him playing the game! czcams.com/video/BtYfR3lY6Cw/video.html In this devlog I go over how I added a multiplayer mode to my Minecraft clone. I go over some basics of how the Internet works, and then dive in deep to understand how you can use that when creating a multiplayer game. N...
How Shaders Work (in OpenGL) | How to Code Minecraft Ep. 3
zhlédnutí 106KPřed 2 lety
Join the Discord: discord.gg/4tHeAkxNg7 Follow me on Twitch: www.twitch.tv/gameswthgabe In this episode I do a deep dive into the code and concepts behind GLSL shaders. I go over everything from how to construct them, compile and link them, and execute them on the GPU to how to think about shaders conceptually. This is the next episode in the Coding Minecraft tutorial series. In the next episod...
Buffers in OpenGL | How to Code Minecraft Ep. 2
zhlédnutí 86KPřed 2 lety
Join the Discord: discord.gg/4tHeAkxNg7 Follow me on Twitch: www.twitch.tv/gameswthgabe In this episode I go over the fundamentals of buffers in OpenGL. I go over vertex array buffers and element buffers in depth in the latter half of the video. I also cover some fundamental concepts (the graphics pipeline) that are required to understand the necessity of buffers. Challenges: github.com/codingm...
Definitive Guide to Creating a Window | How to Code Minecraft Ep. 1
zhlédnutí 93KPřed 2 lety
Join the Discord: discord.gg/4tHeAkxNg7 Follow me on Twitch: www.twitch.tv/gameswthgabe In this episode I describe how the process of creating a window works. I go through the required libraries for initializing a window and OpenGL, and show how you could create a main game loop. I also describe what this series will cover, roughly in the order I will cover it. This is the first episode in the ...
I Coded Minecraft in *Only* 3 MONTHS!!!!
zhlédnutí 151KPřed 2 lety
Follow me on Twitch: www.twitch.tv/GamesWthGabe Download the Clone (Windows x64 only): github.com/codingminecraft/StreamMinecraftClone/releases Watch the old streams: czcams.com/channels/X9O5F062HVFmx9CNPGiMgg.html Join the Discord: discord.gg/4tHeAkxNg7 In this video I go over the past few months of me tinkering on a Minecraft clone. I have added many different things to this clone. Some of th...
The LAST Episode and Distributing your Game | Coding a 2D Game Engine in Java #58
zhlédnutí 17KPřed 2 lety
Follow the Minecraft Series at Twitch Live: www.twitch.tv/gameswthgabe Saturdays at 8AM (CST) Join the Discord: discord.gg/4tHeAkxNg7 JAR to Exe: www.genuinecoder.com/convert-java-jar-to-exe/ Ghost Vertices (Box2D Collision Issues): www.iforce2d.net/b2dtut/ghost-vertices Code: github.com/codingminecraft/MarioCZcams 0:00 Intro 1:37 Distributing Your Game 5:18 Building a Fat JAR 6:40 Fixing Mario...
Fireballs and Bug Fixes | Coding a 2D Game Engine in Java #57
zhlédnutí 6KPřed 2 lety
Join the Discord: discord.gg/4tHeAkxNg7 In this episode I go over how to code the Fireball ability in Mario. I also go over a bug-fix for entering pipes. Before you had to hit the pipe just right to be able to travel through it, but I've fixed it so that it should work as expected. Lastly, I go over a bug-fix for the debug drawing. We were drawing too many lines before which can cause weird iss...
Adding Flag Poles to Mario | Coding a 2D Game Engine in Java #56
zhlédnutí 2,7KPřed 2 lety
Join the Discord: discord.gg/4tHeAkxNg7 In this episode I add one of the final core elements to the classic Mario game, the flag pole and slide animation. I add the slide animation by manually sliding Mario down until he hits the ground, and then the code makes him walk forwards until a certain point. After it finishes playing the animation it switches back to the level editor scene. Code: gith...
Mario Turtle AI | Coding a 2D Game Engine in Java #55
zhlédnutí 3,2KPřed 2 lety
Join the Discord: discord.gg/4tHeAkxNg7 In this episode I go over how to code the Turtle AI for Mario. This is very similar to the Goomba AI, the main difference is for managing the turtle's state when he is spinning in a shell. Code: github.com/codingminecraft/MarioCZcams/tree/5b0d14afae1c2ecff8525abdcc6c2e3e0da346ae 0:00 Intro 0:30 Adding a Button for Turtles 1:19 Adding a Turtle Prefab 3:44 ...
The Math Behind Font Rasterization | How it Works
zhlédnutí 169KPřed 2 lety
#SoME Join the Discord: discord.gg/4tHeAkxNg7 If you have ever wondered how a font is rasterized, look no further. In this video I go into depth about the necessity for font rasterization, the math behind it, and how we convert the math to pixels on the screen. I also go over how 1st and 2nd order Bezier curves work. I talk about how to gain an intuition for Bezier curves, and how to formulize ...
Static Keyword in C | C++ For Java Devs Ep. 11
zhlédnutí 2KPřed 2 lety
Join the Discord: discord.gg/4tHeAkxNg7 In this episode I go over the keyword static in C and its several different contexts. Unlike traditional programming languages, the static keyword can mean several different things depending on the way it is used in C . I will go over the 3 ways that were carried over from C: Internal Linkage, "Static Member Functions", and Local Static Variables. Once we...
Game Camera & Grid Lines | Coding a 2D Game Engine in Java #54
zhlédnutí 3,9KPřed 2 lety
Join the Discord: discord.gg/4tHeAkxNg7 In this episode I go over how to code a game camera that moves with Mario, but does not move back when Mario moves back. I also go over a solution to fixing the Debug Drawing Lines that stick around for too long, or don't draw. Code: github.com/codingminecraft/MarioCZcams/tree/35bdf2c4e2e80acb19d1dd7ea8fa4650567ad3ab 0:00 Intro 0:40 Visual Explanation of ...
Coding Minecraft Live
zhlédnutí 7KPřed 2 lety
Coding Minecraft Live
Mario Pipes & Editor Improvements | Coding a 2D Game Engine in Java #53
zhlédnutí 2,1KPřed 2 lety
Mario Pipes & Editor Improvements | Coding a 2D Game Engine in Java #53
Goomba AI | Coding a 2D Game Engine in Java #52
zhlédnutí 2,9KPřed 2 lety
Goomba AI | Coding a 2D Game Engine in Java #52
The Tyrannical Mods of Stack Overflow
zhlédnutí 371KPřed 2 lety
The Tyrannical Mods of Stack Overflow
Powerups | Coding a 2D Game Engine in Java #51
zhlédnutí 1,7KPřed 2 lety
Powerups | Coding a 2D Game Engine in Java #51
References | C++ For Java Devs Ep. 10
zhlédnutí 1,3KPřed 2 lety
References | C For Java Devs Ep. 10
Variable Length Jumps | Coding a 2D Game Engine in Java #50
zhlédnutí 5KPřed 2 lety
Variable Length Jumps | Coding a 2D Game Engine in Java #50
Pillbox Colliders and Player Controllers | Coding a 2D Game Engine in Java #49
zhlédnutí 3,2KPřed 2 lety
Pillbox Colliders and Player Controllers | Coding a 2D Game Engine in Java #49
How to Use Box2D Physics | Coding a 2D Game Engine in Java #48
zhlédnutí 7KPřed 2 lety
How to Use Box2D Physics | Coding a 2D Game Engine in Java #48
Improving the Editor | Coding a 2D Game Engine in Java #47
zhlédnutí 4,1KPřed 2 lety
Improving the Editor | Coding a 2D Game Engine in Java #47
Sounds with OpenAL | Coding a 2D Game Engine in Java #46
zhlédnutí 4,5KPřed 2 lety
Sounds with OpenAL | Coding a 2D Game Engine in Java #46
2D Animations | Coding a 2D Game Engine in Java #45
zhlédnutí 4,6KPřed 3 lety
2D Animations | Coding a 2D Game Engine in Java #45
Even More Bug Fixing | Coding a 2D Game Engine in Java #44
zhlédnutí 1,9KPřed 3 lety
Even More Bug Fixing | Coding a 2D Game Engine in Java #44
Arrays are Pointers | C++ For Java Devs Ep. 9
zhlédnutí 1,5KPřed 3 lety
Arrays are Pointers | C For Java Devs Ep. 9
Pointers in 16 Minutes | C++ For Java Devs Ep. 8
zhlédnutí 4,1KPřed 3 lety
Pointers in 16 Minutes | C For Java Devs Ep. 8

Komentáře

  • @ratchet1freak
    @ratchet1freak Před dnem

    there is a definite optimization possible if you keep a list of boundary pixels as you iterate over the image, on each next pixel you iterate over the boundary pixels, discard the ones now outside the range and additionally check the pixels now inside the range if the current pixels changes state it's a bit trickier but you can reuse the previous boundaries to quickly find all the new boundary pixels

  • @Ice_2192
    @Ice_2192 Před 2 dny

    At least ChatGPT doesn't complain about repetitive questions like ToxicOverflow. Those people remind me of a handful of teachers in high school and in college. First day, they say "If you dont understand something, raise your hand and I'll repeat it". When the time comes i didn't catch the teacher the first time they covered it, the teacher says "What? Why? Were you not paying attention? I just covered that." Like why say you're open to student to ask questions for clarity if you're gonna get angry why they do?

  • @user-cl5wn9fz7f
    @user-cl5wn9fz7f Před 7 dny

    Part 2 please🙏

  • @migats2160
    @migats2160 Před 7 dny

    4:29 you are wrong. Static variables are initialized at class loading time which happens when the application interacts with one of it's methods or constructors.

  • @TinyTaronja
    @TinyTaronja Před 9 dny

    how do you install the minecraft clone?

  • @TrickyTimeTree
    @TrickyTimeTree Před 10 dny

    What's the terms of service vor this video editor? or is it not for sale? haha

  • @TheJafjaf07
    @TheJafjaf07 Před 10 dny

    Gabe first of all thank you for the great tutorials they are very good and helpful. I have one question about the uid(s). Shouldn't the uid be final. I mean if we assign id to one Component or GameObject we should not be able to change this id ?

  • @craftycadence3685
    @craftycadence3685 Před 11 dny

    The cave gen had to be completely overhauled that and the height maps both had to be changed. This is why 1.17-1.20 took so long.

  • @Yier_M
    @Yier_M Před 13 dny

    Thanks a lot, Gabe! 非常感谢! :)

  • @Brick_Eater_
    @Brick_Eater_ Před 14 dny

    7:39 he copy and pasted the title card from the perlin noise section and forgot to change the text lmao

  • @gooficat
    @gooficat Před 19 dny

    Much better to use glDrawElements with 12 vertices (to correspond with an unwrapped cube) than to have gldrawarrays

  • @DragonDrum-vi6df
    @DragonDrum-vi6df Před 19 dny

    At the end of the video you say we have to do a logger. I'm sorry but I don't know what a logger is. Can somebody explain me ?

  • @DragonDrum-vi6df
    @DragonDrum-vi6df Před 19 dny

    I really don't understand why you only have 70 something likes on this video, it's extremely easy to understand. Even if I have spent weeks on c++ I couldn't have found out how to do all this.

  • @milvilleromain57
    @milvilleromain57 Před 20 dny

    This video is two years old. As in 2024, trafic on stackoverflow is down 70% from its peak. People can now ask a LLM that will answer politely to their question. SO shit their own foot as you can have as much resource you want without needing it. I remember prefering searching myself for an answer instead of asking on SO dueing my end of study internship because I didn't want to get roasted. It was about some low level interaction with a embedded system so nothing trivial. As for the answers like "buy a book"... what if you're a student with no money or are on time constraint. It is as if those SO admin have nothing else to do. SO gives the same vibe as the Arch forum. A bunch of gate keepers that want to continue to enjoy their superiority complex. After that they wonder why people prefer endeavourOS and manjaro forum and OS

  • @Kiwi2703
    @Kiwi2703 Před 20 dny

    2 years later, 10k likes :D

  • @nobirthday
    @nobirthday Před 21 dnem

    Much love for the engineers here 🖤😂 the neverending debates are what keep the universe expanding, maybe someday we can all understand how it all works

  • @truemajner
    @truemajner Před 24 dny

    *For those whose framerate jumps from infinity to 30* I had the same problem and I fixed it a day ago. In Time.java, make timeStarted type long not a float. I have a 240 hertz monitor and, probably, the precision of floating point calculations in this case is not enough. You don't need to change others usages of float in your code.

  • @brinklebros7136
    @brinklebros7136 Před 25 dny

    im not even a 4th of the way through tis course and already my mind is blown. it would have taken me years to just do these 9 vids. it takes me about 2 days to wrap my head around just one. anyway finished number 9 with no hiccups this time.

  • @lemonsmc_48
    @lemonsmc_48 Před 26 dny

    add the jenny mod PLEASE

  • @davidnicolson4325
    @davidnicolson4325 Před 27 dny

    Nice videos, up until video 6 going into video 6a then you completely lost me and now the entire program fell apart i.e. program dose not work at all. my question is should i by pass video 6a and continue on as though video 6a is not there in the same way it was in the beginning and then go back and put 6a in. Please advise.

  • @brinklebros7136
    @brinklebros7136 Před 29 dny

    dang you make this stuff like your on speed lol one day i want to be able to write like you.

  • @rangerwill7241
    @rangerwill7241 Před 29 dny

    Watching this two years later and it's hugely helpful. Most of the tutorials out there are way too basic for people with programming experience.

  • @barhamamerican8003
    @barhamamerican8003 Před 29 dny

    thanks! good vidio do more!

  • @crazychicken8290
    @crazychicken8290 Před měsícem

    can someone please explain to me how this works and how to make it? 5:52 also how do seeds work? I want to make seeds so my mean filter / blur noise can produce the same results using seeds but i dont know how to implement it.

  • @taim39
    @taim39 Před měsícem

    ive never hated c# till now, iam trying to follow this tutorial in c# but the font class in c# has nothing to work with

  • @eXtremeElectronics
    @eXtremeElectronics Před měsícem

    Very helpful

  • @unaigonzalezsanchez5945
    @unaigonzalezsanchez5945 Před měsícem

    Hey Gabe, I'm worried about what you said about Java and the C++ advantages, the game engines made for Java like Libgdx or Jmonkey are not good?

    • @GamesWithGabe
      @GamesWithGabe Před 16 dny

      I wouldn’t worry too much about that :) C++ definitely has some advantages because of the way you can manipulate memory, but the game engines for Java should provide enough abstraction that you don’t have to worry about that stuff.

  • @brinklebros7136
    @brinklebros7136 Před měsícem

    ANYONE STILL NOT GETTING THE SQUARE HERES SOME TIPS 1st use the git hub for the project to see if it even works. i did this and found that i screwed up my vertexshaderssrc I also found out that my math for int vertexSizeBytes = positionSize + colorSize * floatSizeBytes; should have been int vertexSizeBytes = (positionSize + colorSize) * floatSizeBytes; check everything over!!

  • @brinklebros7136
    @brinklebros7136 Před měsícem

    finished school work then had time to knock out this video 3 tonight WOO! i feel like im making so much progress.

  • @brinklebros7136
    @brinklebros7136 Před měsícem

    ill admit that gradle thing gave me many hiccups but aside from that, this tutorial is very nice!

  • @TheFutureIsLow
    @TheFutureIsLow Před měsícem

    impressing, but, I added "Hobby Horsing" to Minecraft - just saying :D

  • @Eevneon
    @Eevneon Před měsícem

    We really need more videos like this but on subjects other than the terrain generations

  • @avinashgupta8955
    @avinashgupta8955 Před měsícem

    What if my computer's screen resolution is too small and the 600 x 300 quad looks too big on my screen

  • @xoxogamewolf7585
    @xoxogamewolf7585 Před měsícem

    Summary: Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve Bezier Curve

  • @Flimcy
    @Flimcy Před měsícem

    please do a tutorial on how to make this engine into a 3d engine this will be so amazing

  • @vevericac3294
    @vevericac3294 Před měsícem

    could you explain the angular velocity for circles please? i've been trying to find something useful for ages but couldnt

  • @MyAnno1404
    @MyAnno1404 Před měsícem

    I learned dont do macros from this video.

  • @ChrisRX13
    @ChrisRX13 Před měsícem

    Googled 'e' Didn't get an answer to my question

  • @SpirosK-fh7rm
    @SpirosK-fh7rm Před měsícem

    I've asked a question there before like "how to do A?", all replies were like "I do B. Use B." which do not answer the question. I have reasons to do A. If you don't, then don't fucking answer the question. It's as simple as that. Stack overflow sucks in every way possible =/

  • @Banaannaa
    @Banaannaa Před měsícem

    amazing

  • @Banaannaa
    @Banaannaa Před měsícem

    Incredible, earned a sub

  • @n4bb12
    @n4bb12 Před měsícem

    Opinion-based questions often attract unsubstantiated responses that answer the question but leave you none the wiser. I'd rather understand the advantages and disadvantages of something and form my own opinion than being served a poll result based on nothing.

  • @n4bb12
    @n4bb12 Před měsícem

    Why is it so difficult to just say pixijs? It's not difficult but lazy questions are generally perceived as disrespectful of other people's time. There is more than one way to ask for help.

  • @badiyavasanth7657
    @badiyavasanth7657 Před 2 měsíci

    🎉❤hi 🎉🎉🎉🎉🎉🎉🎉🎉🎉😢😢😢😊😊😊😊😊😊😊😊😊😊😊😊😊😅❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉

  • @badiyavasanth7657
    @badiyavasanth7657 Před 2 měsíci

    🎉❤hi

  • @elgatoxd-ki2bo
    @elgatoxd-ki2bo Před 2 měsíci

    En español no hay piipippipi

  • @lanchanoinguyen2914
    @lanchanoinguyen2914 Před 2 měsíci

    9:51 i don't get it why you had to do dot product,isn't it the position vectors get rotated and translated(transformed) then they already show their X,Y and Z values?

  • @bencollier3758
    @bencollier3758 Před 2 měsíci

    I'm on an x86 Mac, and what I'm seeing here is that the scale function, "activeGameObject.transform.scale.x" isn't triggering an update to the object on the screen. The scale changes only appear when you change to the position gizmo and move the object. As a hacky workaround, I'm doing "activeGameObject.transform.position.x += 0.0001f;" after the call to alter the scale (and likewise for the y-axis). This seems to make everything work, but I'd be interested to know what the correct way of fixing it is.

  • @zainshahab144
    @zainshahab144 Před 2 měsíci

    Please add steve