STUDIO SIM! - the game - is DONE for now. End of Game Jam + Music Added. ~ Final Dev log for this game.

in GAME DEVyesterday

im writing this with 40 minutes left of until the deadline.
Music and sounds have been added to the best of my ability.
Most of the bugs have been fixed.
I cant think of a bug that i left unfixed but im sure there are some.

I didnt get around to adding actual enemies that you can kill if you go outside the studio, but thats not the point of the studio sim.

The point is to simply make cool paintings.

You can SIZE and ROTATE the stickers which, that alone, is a huge win.

rotationsize
roatate.gifsize.gif

I remember i was talking about possibly making this happen. and its crazy how fast i was able to materialize it.

You get by with a little help from your friends. Im glad i had a great group of friends working on this game jam with me, each of us working on our own game. We made 3 games.

i used a coding agent to help me make this and i honestly dont even know what i built anymore. there are systems in the game that i dont use due to ideas that i changed. lets have it list all the shit in the game:

thumb.png

Painting/Sticker System

  • 2D Canvas on 3D Plane: SubViewport-based painting system that renders 2D stickers onto a 3D mesh in the world
  • Layer-based Composition: Z-ordering system for sticker placement with raise/lower controls ended up removing the ability to change layers
  • Sticker Library: 30+ PNG stickers that can be placed, rotated, scaled, and layered
  • Preview System: Semi-transparent preview with idle fade-out effect
  • Transform Controls: Rotation (T/R keys), scaling (Z/X keys), and position adjustment
  • Canvas Clipping: Automatic boundary detection for accurate validation
  • Texture Baking: Converts completed paintings into frozen textures

it also doenst mention the 3d stickering of the room you can do. which i might make you able to save.

Mission System the thing i kind of gave up on trying to make feel good

  • Procedural/Hand-crafted Missions: Support for both approaches via Resource-based definitions
  • Visual Validation: Pixel-by-pixel comparison with configurable color tolerance
  • Difficulty Scaling: Dynamic pass thresholds (60%-95%) and color tolerance based on difficulty
  • Grading System: A/B/C/F grades based on match percentage
  • Progress Tracking: Saves best scores, grades, and painting snapshots per mission
  • Reference Images: Side-by-side target comparison
  • Mission Manifest: JSON-based mission loading system

Player Controller

  • First-Person Movement: Walk/sprint, jump, smooth inertia-based physics
  • Mouse & Gamepad Support: Dual input system with adjustable sensitivity
  • Head Bob: Dynamic camera bobbing while walking/running
  • FOV Adjustment: Dynamic field-of-view changes based on sprint speed
  • Character Animation: Idle, walk, run, jump animations tied to movement state

Camera System Works great but i didnt really use it

  • Resident Evil-style Fixed Cameras: Zone-based camera switching
  • Smooth Camera Blending: Interpolated transitions between cameras (position + FOV)
  • Priority-based Zones: Overlapping zones with priority handling
  • Camera Cycling: Auto-cycle through multiple cameras in a zone
  • Player Input Toggle: Automatic input disable in cinematic zones
  • Laser Beam Visualizer: Red laser beam showing player's aim in camera zones

Interaction System

  • Unified Raycast System: PlayerInteractionComponent handles all interactions
  • Hover Outlines: Shader-based outline effect on interactable objects
  • Component-based Architecture: Modular interaction system with various component types:
    • InteractionComponent (base class)
    • CarryableComponent (physics-based carrying)
    • ButtonInteractionComponent (button presses)
    • WeaponComponent (nail gun, etc.)
    • PowerCordPlugComponent (electrical connections)
    • PaintingHangingComponent (nail attachment)
    • BreakableComponent (destructible objects)

Carrying/Physics System

  • Physics-based Carrying: Smooth follow system with velocity clamping
  • Throw Mechanics: Configurable throw power and gentle drop options
  • Rotation While Carrying: Optional object rotation with keyboard controls only for paintings
  • Auto-drop Safety: Distance-based auto-drop to prevent wall clipping
  • Collision Management: Dynamic collision mask adjustment while carrying
  • Impact Detection: Collision sounds with velocity thresholds and cooldowns

Nail Gun & Hanging System

  • Projectile Nails: Physics-based nail shooting with RigidBody3D
  • Wall Mounting: Nails stick to surfaces on impact with correct orientation
  • Painting Hanging: Automatic snap-to-nail system for paintings unfinished
  • Snap Detection: Area3D-based proximity detection for hanging unfinished
  • Nail Removal: Remove nail when painting is taken down unfinished

Electrical/Power System

  • Power Cords: Visual rope rendering between plugs and devices
  • Outlet Sockets: Snap-to-outlet system for power plugs
  • Powered Devices: Component-based power state management
  • Visual Feedback: Sagging cord simulation with configurable parameters

Save/Load System

  • World State Persistence: JSON-based save system for paintings and nails
  • Texture Storage: Saves painting textures to user directory
  • Transform Persistence: Position and rotation data for all objects
  • Mission Progression: Tracks completed missions, grades, and best scores
  • Auto-registration: Components auto-register with save system

gme saved.png

UI/Menu Systems

  • State Machine: Central UIManager controlling all game states

  • Mission Selection Browser: Grid-based mission cards with thumbnails

  • Mission HUD: Bottom-right corner display with mission name and target

  • Validation Results UI: Grade display, score breakdown, side-by-side comparison

  • Shop UI: Placeholder for future monetization/progression unfinished

  • Title Screen: Character preview and menu navigation

  • Scene Transitions: Fade-in/fade-out between scenes

Visual Validator unpolished... i need to research how i should actually do this

  • Pixel-by-pixel Comparison: RGB color distance calculation
  • Color Distribution Analysis: Top 5 most frequent colors with diversity filtering
  • Color Histogram: Visual representation of color usage
  • Transparency Handling: Smart alpha channel handling for accurate validation
  • Image Quantization: Bucket-based color reduction for performance

Rendering Features

  • Mirror Shader: Screen-space reflection shader for mirrors
  • Hover Outline Shader: Inverted hull outline effect with configurable thickness/color
  • Unshaded Materials: Performance-optimized materials for UI elements
  • SubViewport Rendering: Efficient texture generation for paintings

Audio System

  • Component-based Audio: Each component can have pickup/drop/interaction sounds
  • Sticker Placement Sounds: 5 different sound variations for sticker placement
  • Impact Sounds: Velocity-based collision audio with cooldowns
  • Weapon Sounds: Nail gun firing effects

Autoload Singletons

  • CameraManager: Global camera transition management
  • MissionManager: Mission loading and progression tracking
  • UIManager: UI state machine and player data
  • WorldStateManager: Save/load system for world objects
  • PaintingModeManager: Painting canvas lifecycle management

Additional Technical Features

  • Web Export Support: HTML5-compatible with static asset lists
  • Component Inspection: Debug tools for testing interactions
  • Natural Sorting: Proper numeric sorting for sticker libraries
  • Frame-perfect Physics: Deferred initialization for physics stability
  • Group-based Discovery: Efficient object finding via scene groups
  • Resource-based Data: Extensible .tres files for missions and stickers
  • Custom Themes: UI theming system for consistent styling

Screenshot 2025-12-14 at 9.52.41 AM.png

I spent the last 2 days working on music which i made in Picotron.

Screenshot 2025-12-13 at 5.08.33 PM.png

game painting tool.

The music turned out pretty okay. the sound effects too. i really like the sound of the nailgun shooting the nail into the wall.

I think the next thing that im going to do, is make a promo video for it that i can share on my social medias. i gotta get more into promoting myself as a game dev so when gnar world comes out i have some eyes on my work.

I watched a streamer play the game yesterday when he was playing all the games, and i saw some stuff i need to make more clear- like the buttons used to rotation and scaling.

Also, players intuitivley hit the green button after they are done making a painting, so i need this to say like "you need to start a mission first" or something.

I really would like some feedback on the game if you are reading this and feel like checking it out.

https://webgnar.itch.io/painting-game

things that i should polish when i fire this game back up

-nails should hang paintings
-the missions should be more clear
-some kind of UI telling the player what buttons do what