Code a 2D Game Engine using Java - Full Course for Beginners
Learn how to program a 2D game engine from scratch using the Java Programming Language. You will use the game engine to create a Super Mario Clone but the engine can be used to create other games as well.
💻 Code: https://github.com/codingminecraft/MarioYoutube/tree/master
✏️ Course created by GamesWithGabe. Check out his channel: https://www.youtube.com/channel/UCQP4qSCj1eHMHisDDR4iPzw
🎥 Part 2 (final hour of this course): https://youtu.be/roPRqEQZFu8
⭐️ Course Contents ⭐️
⌨️ (00:00:06) Introduction
⌨️ (00:07:54) Setting up the Window with LWJGL
⌨️ (00:25:20) Adding Event Listeners with GLFW
⌨️ (00:51:42) Creating a Scene Manager & Delta Time Variable
⌨️ (01:11:26) How OpenGL Graphics Programming Works
⌨️ (01:32:53) Drawing the First Square
⌨️ (02:02:56) Regexes and Shader Abstraction
⌨️ (02:24:25) Game Camera OpenGL
⌨️ (02:47:47) GLSL Shaders
⌨️ (03:08:45) Texture Loading in LWJGL3
⌨️ (03:36:02) Entity Component System
⌨️ (04:06:25) Batch Rendering in LWJGL3
⌨️ (04:50:00) Resource Management in LWJGL3
⌨️ (05:05:30) Texture Batching
⌨️ (05:38:48) Spritesheets
⌨️ (06:01:12) Dirty Flags in Rendering
⌨️ (06:23:17) Alpha Blending and Z-Indexing
⌨️ (06:38:56) Integrating ImGui
⌨️ (07:01:56) ImGui Fonts and Scene Integration
⌨️ (07:19:43) Serialization with Gson
⌨️ (07:42:48) Deserialization with Gson
⌨️ (08:06:03) Exposing Variables to the Level Editor
⌨️ (08:25:29) Converting Screen Coords to World Coords
⌨️ (08:49:27) Drag 'N Drop Level Editor
⌨️ (09:15:25) Debug Drawing Functions
⌨️ (09:47:35) Snap To Grid Tool
⌨️ (10:10:25) Debug Drawing Boxes and Circles
⌨️ (10:28:58) Framebuffers in OpenGL
⌨️ (10:52:56) ImGui Docking in Java LWJGL
⌨️ (11:11:55) Adding a Game Viewport
⌨️ (11:34:51) Mouse Screen Coordinates to Game Viewport Coordinates
⌨️ (11:50:01) Pixel PERFECT Mouse Picking
⌨️ (12:23:39) Enabling Mouse Picking and Code Maintenance
⌨️ (12:35:16) Editor Camera Controls with Lerp
⌨️ (13:01:48) Coding Gizmos
⌨️ (13:31:03) Translate and Scale Gizmo
⌨️ (14:04:29)
Watch on YouTube ↗
(saves to browser)
Sign in to unlock AI tutor explanation · ⚡30
Playlist
Uploads from freeCodeCamp.org · freeCodeCamp.org · 0 of 60
← Previous
Next →
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
React: Production Server Setup Part 2 - Live Coding with Jesse
freeCodeCamp.org
cookies vs localStorage vs sessionStorage - Beau teaches JavaScript
freeCodeCamp.org
Browser history tutorial - Beau teaches JavaScript
freeCodeCamp.org
Graph Data Structure Intro (inc. adjacency list, adjacency matrix, incidence matrix)
freeCodeCamp.org
React: Parameterized Routing with Next.js - Live Coding with Jesse
freeCodeCamp.org
React: Dealing with jQuery Issues - Live Coding with Jesse
freeCodeCamp.org
setInterval and setTimeout: timing events - Beau teaches JavaScript
freeCodeCamp.org
Browser and Device Testing - Live Coding with Jesse
freeCodeCamp.org
Last Minute Updates - Live Coding with Jesse
freeCodeCamp.org
Post Launch Updates - Live Coding with Jesse
freeCodeCamp.org
React: Setting Up Google Analytics - Live Coding with Jesse
freeCodeCamp.org
React: Masonry Layout - Live Coding with Jesse
freeCodeCamp.org
Load Balancing Digital Ocean Droplets - Live Coding with Jesse
freeCodeCamp.org
try, catch, finally, throw - error handling in JavaScript
freeCodeCamp.org
Load Balancing: SSL Passthrough Setup - Live Coding with Jesse
freeCodeCamp.org
Graphs: breadth-first search - Beau teaches JavaScript
freeCodeCamp.org
React: Masonry Layout Part 2 - Live Coding with Jesse
freeCodeCamp.org
React: WordPress API Live Search - Live Coding with Jesse
freeCodeCamp.org
Creating WordPress Custom Post Types - Live Coding With Jesse
freeCodeCamp.org
Dates - Beau teaches JavaScript
freeCodeCamp.org
Miscellaneous Front End Updates - Live Coding with Jesse
freeCodeCamp.org
Merging a Pull Request from GitHub - Live Coding with Jesse
freeCodeCamp.org
React + Prettier + Standard JS - Live Coding with Jesse
freeCodeCamp.org
React: Sortable Responsive Table - Live Coding with Jesse
freeCodeCamp.org
Geolocation Sorting by Distance - Live Coding with Jesse
freeCodeCamp.org
Tradeoff Matrix - Agile Software Development
freeCodeCamp.org
The Definition of Ready - Agile Software Development
freeCodeCamp.org
Getting first React job without experience - Ask Preethi
freeCodeCamp.org
React: Google Analytics Click Tracking - Live Coding with Jesse
freeCodeCamp.org
Submitting a PR to an Open Source Project - Live Coding with Jesse
freeCodeCamp.org
Should I go back to school to get CS degree? - Ask Preethi
freeCodeCamp.org
Hero Section CSS Changes - Live Coding with Jesse
freeCodeCamp.org
Working Agreement - Agile Software Development
freeCodeCamp.org
A day at Pennybox with Co-Founder Reji Eapen
freeCodeCamp.org
React: Sorting and Filtering Data - Live Coding with Jesse
freeCodeCamp.org
React: Sorting and Filtering Data Part 2 - Live Coding with Jesse
freeCodeCamp.org
React: Building a New UI - Live Coding with Jesse
freeCodeCamp.org
Definition of Done - Agile Software Development
freeCodeCamp.org
Getting started with jQuery (tutorial) - Beau teaches JavaScript
freeCodeCamp.org
Making a React Blog with WordPress Content - Live Coding with Jesse
freeCodeCamp.org
React, NextJS, CSS - Live Coding with Jesse
freeCodeCamp.org
jQuery events - Beau teaches JavaScript
freeCodeCamp.org
React/NextJS Routing and WordPress API Custom Types - Live Coding with Jesse
freeCodeCamp.org
React: Working with API Data - Live Coding with Jesse
freeCodeCamp.org
React: Refactoring Components - Live Streaming with Jesse
freeCodeCamp.org
jQuery effects - Beau teaches JavaScript
freeCodeCamp.org
More React Refactoring - Live Coding with Jesse
freeCodeCamp.org
animate in jQuery - Beau teaches JavaScript
freeCodeCamp.org
"Finishing" My React Site - Live Coding with Jesse
freeCodeCamp.org
Starting a New React Project (P2D1) - Live Coding with Jesse
freeCodeCamp.org
React Project 2 Day 2: Learning Material UI - Live Coding with Jesse
freeCodeCamp.org
The Agile Manifesto - Agile Software Development
freeCodeCamp.org
jQuery: get and set with http, text, val, and attr - Beau teaches JavaScript
freeCodeCamp.org
React Project 2 Day 3 - Live Coding with Jesse
freeCodeCamp.org
The INVEST approach to product backlog items
freeCodeCamp.org
React Project 2 Day 4 - Live Coding with Jesse
freeCodeCamp.org
Chickens and Pigs - Agile Software Development
freeCodeCamp.org
React Project 2 Day 5 - Live Coding with Jesse
freeCodeCamp.org
jQuery: add and remove DOM elements - Beau teaches JavaScript
freeCodeCamp.org
React Project 2 Day 6 - Live Coding with Jesse
freeCodeCamp.org
More on: AI Systems Design
View skill →Related AI Lessons
🎓
Tutor Explanation
DeepCamp AI