# 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 | using damped oscillators to move and rotate things | DONE ✔
| 2D | juicy_bouncy_ball | making a simple bouncing ball JUICY | DONE ✔
| 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 | showing 7 tips to make better 2D visuals | DONE ✔
| 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 | trying to use the accelerometer to set the gravity | DONE ✔
| 2D | connected_dots | dots moving around making connections | DONE ✔
| 2D | destructible_terrain | simple worms like destructible terrain using the Geometry class | DONE ✔
| 2D | flag_shader | 2D & 3D simple flag shader | DONE ✔
| 2D | geometry_class | showcase of what the geomtry class can offer in 2D | DONE ✔
| 2D | loading_shader | simple loading shader effects, from black and white to rgb | DONE ✔
 | 2D | mobile_ui | trying the Godot's UI node on mobile | DONE ✔
| 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 | time rewind mechanic for all objects, 2D & 3D | DONE ✔
| 2D | scratch_shader | scratch effect done with by drawing on a viewport and using the texture in a shader | DONE ✔
| 2D | trajectory_line | trajectory line using maths & a Line2D. Supports collisions! | DONE ✔
| | | | |
 | 3D | android_maze_accelerometer | control a maze's orientation with the phone's acceleromter | DONE ✔
 | 3D | area_gravity | a simple test using the gravity of an area | DONE ✔
 | 3D | balloon_deploy | recreating just cause balloon deploy mechanic with physics | DONE ✔
 | 3D | camera_wall | wall hiding to reveal player to the camera | DONE ✔
 | 3D | car | a test with godot vehicle body physics and trial-like terrain | DONE ✔
 | 3D | control_remedy | mechanic re-creation from control remedy: grabbing and throwing object through telekinesis | DONE ✔
 | 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 | 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 | a physics based hoverboard, inspired by [Codeer](https://twitter.com/CodeerDev). | DONE ✔
 | 3D | inverted_pendulum | a test with bullet's physics. An inverted pendulm with an inertia wheel | DONE ✔
 | 3D | mirrors | two ways of faking mirrors | DONE ✔
 | 3D | plane | plane controller | WIP 🛠
 | 3D | procedural_animation | prodecural animation of a spider-like (or robot) model, with inverse kinematics | WIP 🛠
 | 3D | robotic_arm | computer vision + IK test with a robotic pick and place arm | WIP 🛠
 | 3D | spectrum_analyzer | simple spectrum analyzer moving 3d objects | DONE ✔
 | 3D | tv | displaying a video or frames on a crt tv | DONE ✔
 | 3D | valheim_tree_chop | recreating the Valheim tree chop mechanic | DONE ✔
 | 3D | wheelBot | a robot rolling on one wheel | DONE ✔
 | 3D | xray_vision | stting up materials to simulate an Xray/see through effect | DONE ✔
| | | | |
 | VR | quest_playground | a project testing various things in VR for the Oculus Quest: handtracking, handtrackings physics | WIP 🛠
 | VR | table_tennis | trying to use Godot's physic to recreate a table tennis game | WIP 🛠
 | VR | bow_and_arrow | bow and arrow mechanic | WIP 🛠
 | VR | control_like_interaction | trying to recreate CONTROL like movement, and messing with area's gravity | DONE ✔
| | | | |
 | MISC | accelerometer_gamepad | use the phone's accelerometer and websockets to control a game. *See 2D/accelerometer_gamepad_game* | DONE ✔
 | MISC | accessibility | a few examples of relatively easy things to make your game more accessible. See: https://youtu.be/YVGL3IifhLc | DONE ✔
 | MISC | audio_visualizer | represent the audio magnitude against time both left and right channel. Drawn as the song plays | DONE ✔
 | MISC | camera_transition | smoothly transition between two cameras. Works both for 2D & 3D | DONE ✔
 | MISC | card_game | test using cards to make a UI | DONE ✔
 | MISC | instagram_ui | recreating some of Instagram's UI | DONE ✔
 | MISC | everything_particles | turn anything into particles using viewports | DONE ✔
 | MISC | random | all kinds of usage of random | DONE ✔
 | MISC | slow_down_time | two ways of slowing down time | DONE ✔
 | 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**
**One time donations**
## 📔 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/)