# Godot experiments

⚠️ **Important: All the new experiments starting from march 2023 will target Godot 4.0. If you want to checkout 3.x project, head to the [3.x branch](https://github.com/MrEliptik/godot_experiments/tree/3.x).** Some of my 2D/3D/VR/UI experiments in Godot. You can find some of my tutorials and experiments on my [YouTube channel](https://www.youtube.com/channel/UCANaLfiFwsHttGv6qGvSEIw). If you want shader specific experiments, head to my [Shaders experiments repo](https://github.com/MrEliptik/shader_experiments) ## 🦺 Projects & descriptions | Icon | Type | Tittle | Description | Status | :-----:|:-------:|:-------:|:-----------:|:------:| ![](2D/damped_oscillator/icon.svg)| 2D | damped_oscillator | using damped oscillators to move and rotate things | DONE ✔ ![](2D/juicy_bouncy_ball/icon.svg)| 2D | juicy_bouncy_ball | making a simple bouncing ball JUICY | DONE ✔ ![](2D/polygon_tools/icon.svg)| 2D | polygon_tool | How to use Polygon2D, CollisionPolygon2D, Line2D and Path2D to create obstacles, levels and more | DONE ✔
Godot 3.x projects | Icon | Type | Tittle | Description | Status | :-----:|:-------:|:-------:|:-----------:|:------:| ![](2D/7_tips_2D_look/icon.png)| 2D | 7 tips 2D look | showing 7 tips to make better 2D visuals | DONE ✔ ![](2D/accelerometer_gamepad_game/icon.png)| 2D | accelerometer_gamepad_game | simple game with websocket server to be controlled by a smartphone's accelerometer. *See MISC/accelerometer_gamepad* | DONE ✔ ![](2D/android_accelerometer/icon.png)| 2D | android_accelerometer | trying to use the accelerometer to set the gravity | DONE ✔ ![](2D/connected_dots/icon.png)| 2D | connected_dots | dots moving around making connections | DONE ✔ ![](2D/destructible_terrain/icon.png)| 2D | destructible_terrain | simple worms like destructible terrain using the Geometry class | DONE ✔ ![](2D/flag_shader/icon.png)| 2D | flag_shader | 2D & 3D simple flag shader | DONE ✔ ![](2D/geometry_class/icon.png)| 2D | geometry_class | showcase of what the geomtry class can offer in 2D | DONE ✔ ![](2D/loading_shader/icon.png)| 2D | loading_shader | simple loading shader effects, from black and white to rgb | DONE ✔ ![](2D/mobile_ui/icon.png) | 2D | mobile_ui | trying the Godot's UI node on mobile | DONE ✔ ![](2D/quick_prototype/icon.png)| 2D | quick_prototype | a small scene with a script to allow quick prototyping. You draw a shape with the line2D, and it automatically add a physics body and a background to your shape. | DONE ✔ ![](2D/rewind_mechanic/icon.png) | 2D | rewind_mechanic | time rewind mechanic for all objects, 2D & 3D | DONE ✔ ![](2D/scratch_shader/icon.png)| 2D | scratch_shader | scratch effect done with by drawing on a viewport and using the texture in a shader | DONE ✔ ![](2D/trajectory_line/icon.png)| 2D | trajectory_line | trajectory line using maths & a Line2D. Supports collisions! | DONE ✔ | | | | | ![](3D/android_maze_accelerometer/icon.png) | 3D | android_maze_accelerometer | control a maze's orientation with the phone's acceleromter | DONE ✔ ![](3D/area_gravity/icon.png) | 3D | area_gravity | a simple test using the gravity of an area | DONE ✔ ![](3D/balloon_deploy/icon.png) | 3D | balloon_deploy | recreating just cause balloon deploy mechanic with physics | DONE ✔ ![](3D/camera_wall/icon.png) | 3D | camera_wall | wall hiding to reveal player to the camera | DONE ✔ ![](3D/car/icon.png) | 3D | car | a test with godot vehicle body physics and trial-like terrain | DONE ✔ ![](3D/control_remedy/icon.png) | 3D | control_remedy | mechanic re-creation from control remedy: grabbing and throwing object through telekinesis | DONE ✔ ![](3D/fish_tank_shader/icon.png) | 3D | fish_tank_shader | leaky fish tank shader. You shoot somewhere and the water level drops until it reaches the hole | DONE ✔ ![](3D/greenscreen_camera/icon.png) | 3D | greenscreen_camera | a greenscreen effect to a camera. The camera only sees an object, allowing you to put something in the background, like an image. | DONE ✔ ![](3D/hoverboard/icon.png) | 3D | hoverboard | a physics based hoverboard, inspired by [Codeer](https://twitter.com/CodeerDev). | DONE ✔ ![](3D/inverted_pendulum/icon.png) | 3D | inverted_pendulum | a test with bullet's physics. An inverted pendulm with an inertia wheel | DONE ✔ ![](3D/mirrors/icon.png) | 3D | mirrors | two ways of faking mirrors | DONE ✔ ![](3D/plane/icon.png) | 3D | plane | plane controller | WIP 🛠 ![](3D/procedural_animation/icon.png) | 3D | procedural_animation | prodecural animation of a spider-like (or robot) model, with inverse kinematics | WIP 🛠 ![](3D/robotic_arm/icon.png) | 3D | robotic_arm | computer vision + IK test with a robotic pick and place arm | WIP 🛠 ![](3D/spectrum_analyzer/icon.png) | 3D | spectrum_analyzer | simple spectrum analyzer moving 3d objects | DONE ✔ ![](3D/tv/icon.png) | 3D | tv | displaying a video or frames on a crt tv | DONE ✔ ![](3D/valheim_tree_chop/icon.png) | 3D | valheim_tree_chop | recreating the Valheim tree chop mechanic | DONE ✔ ![](3D/wheelBot/icon.png) | 3D | wheelBot | a robot rolling on one wheel | DONE ✔ ![](3D/xray_vision/icon.png) | 3D | xray_vision | stting up materials to simulate an Xray/see through effect | DONE ✔ | | | | | ![](VR/quest_playground/icon.png) | VR | quest_playground | a project testing various things in VR for the Oculus Quest: handtracking, handtrackings physics | WIP 🛠 ![](VR/table_tennis/icon.png) | VR | table_tennis | trying to use Godot's physic to recreate a table tennis game | WIP 🛠 ![](VR/bow_and_arrow/icon.png) | VR | bow_and_arrow | bow and arrow mechanic | WIP 🛠 ![](VR/control_like_interaction/icon.png) | VR | control_like_interaction | trying to recreate CONTROL like movement, and messing with area's gravity | DONE ✔ | | | | | ![](MISC/accelerometer_gamepad/icon.png) | MISC | accelerometer_gamepad | use the phone's accelerometer and websockets to control a game. *See 2D/accelerometer_gamepad_game* | DONE ✔ ![](MISC/accessibility/icon.png) | MISC | accessibility | a few examples of relatively easy things to make your game more accessible. See: https://youtu.be/YVGL3IifhLc | DONE ✔ ![](MISC/audio_visualizer/icon.png) | MISC | audio_visualizer | represent the audio magnitude against time both left and right channel. Drawn as the song plays | DONE ✔ ![](MISC/camera_transition/icon.png) | MISC | camera_transition | smoothly transition between two cameras. Works both for 2D & 3D | DONE ✔ ![](MISC/card_game/icon.png) | MISC | card_game | test using cards to make a UI | DONE ✔ ![](MISC/instagram_ui/icon.png) | MISC | instagram_ui | recreating some of Instagram's UI | DONE ✔ ![](MISC/everything_particles/icon.png) | MISC | everything_particles | turn anything into particles using viewports | DONE ✔ ![](MISC/random/icon.png) | MISC | random | all kinds of usage of random | DONE ✔ ![](MISC/slow_down_time/icon.png) | MISC | slow_down_time | two ways of slowing down time | DONE ✔ ![](MISC/tinder_ui/icon.png) | MISC | tinder_ui | recreating some of Tinder's UI | DONE ✔
## 📹 Videos & GIFs

Accelerometer android maze 3D

Accelerometer android 2D

Inverted_pendulum

Area_gravity

Camera_walls

Audio_visualizer

Car

Greenscreen_camera

Balloon_deploy

Control_remedy

Loading_shader

Connected_dots

Destructible

Geometry class

Rewind mechanic

X-Ray Shader

UI card test

## 👍 Useful - [3D/android_maze_acceloremeter]: - GLES2 was buggy for me, some texture were not shown - Bullet physics has a bug when you change the gravity vector at runtime -> use Godot physics instead - [3D/robotic_arm]: - GLES2 doesn't work correctly with IK, part of the mesh is not moved - Bullet physics' constant velocity for static body doesn't work -> use Godot physics instead - The IK target must be high in the tree than the SkeletonIK node, otherwise Godot freaks out Icon background color: #022C4D http://www.mazegenerator.net/ ## 💁‍♂️ About me Software engineer & gamedev. 3D, 2D & VR. - [Discord](https://discord.gg/83nFRPTP6t) - [YouTube - Gamedev](https://www.youtube.com/c/MrEliptik) - [YouTube - Godot related](https://www.youtube.com/@mrelipteach) - [Twitter](https://twitter.com/mreliptik) - [Instagram](https://www.instagram.com/mreliptik) - [Itch.io](https://mreliptik.itch.io/) - [All links](https://bento.me/mreliptik) If you enjoyed this project and want to support me: **Get exlusive content and access to my game's source code** Patreon link **One time donations** Buy Me a Coffee at ko-fi.com ## 📔 LICENSE & Credits This project is distributed under the MIT license, which it's free to use, modify and redistribute, for both personal and commercial projects. For more information see [LICENSE.md](https://github.com/MrEliptik/godot_experiments/blob/master/LICENSE). - **2D/accelerometer_gamepad_game**! (spaceships) [Kenney](https://www.kenney.nl/) - **2D/android_accelerometer**: (texture + balls) [Kenney](https://www.kenney.nl/) - **3D/android_accelerometer**: (Ball + flag) [Kenney](https://www.kenney.nl/)