• Activity
  • Votes
  • Comments
  • New
  • All activity
  • Showing only topics in ~comp with the tag "game engines". Back to normal view / Search all groups
    1. Any beginners advice or resources on developing a 2D RPG/Puzzle video game?

      Hey guys, I hope this is the right place to post. So my adhd hyperfixation has recently shifted towards an idea for a game and I want to indulge my ADHD by learning all I can about game...

      Hey guys, I hope this is the right place to post.

      So my adhd hyperfixation has recently shifted towards an idea for a game and I want to indulge my ADHD by learning all I can about game development to see if I can achieve this idea to the point that maybe I can put it in "Early Access" to fund even more resources on it.

      But I'm not sure where to start. I'm looking into Godot because it's free and open source and has a lot of community resources, but also wanted to see if anyone had any ideas here.

      I have some coding experience, a lot of technical experience and pick things up extremely quickly.

      The basic idea is that it's a 2D Sidescrolling RPG, but with Match-3 "Candy Crush"-esque mechanics for battles and fighting.

      Extra details If you've played "You Must Build A Boat" or "10000000", it's a LOT kind of like that, in fact those games kind of inspired me, but more refined with a lot more in depth RPG elements and it's a bit more forgiving focusing on keeping a "flow" going, since one of my biggest pet peeves is YMBAB's RNG being very unforgiving and you'll randomly just sit there staring at the board with no moves until you die.

      So the systems/mechanics I'd need to combine to work together are the following:

      • A Match-3 type board where you match tiles, make special tiles by combining 4 or more tiles, all the features of a typical match-3 type game, just tied to outcomes outside of the board-interface.
      • An RPG element, with character attributes, leveling, items, spells, weapons, gear, potions, etc. These elements effect what tiles are on the board during gameplay, effect the chances of certain tiles, and effect health, speed, mana, or grants special in-game abilities like "Precognition"(gives a hint for a move), or "Scroll of Revival"(You can continue without starting over), etc. Attributes also effect things like tile chances, so a higher strength will get you more combat/physical tiles, or a high intelligence will get you more magic tiles.
      • Visual Elements include an auto-running sidescrolling viewport while Dungeon Running. Character auto-runs until encountering enemies, running is not controlled by player. Match-3 board will be beneath that. Time between enemy encounters can be used to clean up the board and match unneccesary tiles, make special moves to line up for next battle, or to replenish health.
        • During Battles, it'd be an over-the-shoulder battle view, similar to Pokemon style battles. Character will have health, enemy will attack character at regular intervals, player will have to balance matching combat/weapon tiles to attack enemy, and matching health/mana potion tiles to replenish health or mana(if they have potions equipped). Enemy can cause environmental effects like poison(some tiles will be poisoned so you lose health if matching them), or being frozen with ice(You need to break tiles next to the ice tiles to break them), or confusion(switches the colors of tiles). Will be block/parry mechanics, occassionally for a few seconds before the enemy strikes, you're required to match a designated tile to either block or parry that attack.
        • In a saferoom it'd be like an isometric kind of "inside a building" format like in Pokemon, just more detailed. I'd like to have saferoom customization and the ability to upgrade your character or gear too.

      Anyways, I'd love any advice or resources. Or if you'd like to help out or discuss the game idea more I'm up for that too.

      16 votes
    2. Godot beginners: Here's how to fade in a 3D mesh

      I'm still a beginner at Godot. I've been playing with Godot and 3D scenes. It's great finally feeling comfortable enough to navigate the UI from watching the tutorials from Zenva/Humble Bundle....

      I'm still a beginner at Godot. I've been playing with Godot and 3D scenes. It's great finally feeling comfortable enough to navigate the UI from watching the tutorials from Zenva/Humble Bundle.

      Recently something that sounds straightforward took a long time for me to figure out: Fading in a 3D mesh. The solution is simple:

      @onready var mesh: MeshInstance3D = find_child("body-mesh")
      
      func _ready() -> void:
      	_set_material_alpha(0)
      	SomeSingleton.some_signal.connect(_fade_in)
      
      func _set_material_alpha(alpha: float) -> void:
      	var material: Material = mesh.get_active_material(0)
      	if material is StandardMaterial3D:
      		material.transparency = BaseMaterial3D.TRANSPARENCY_ALPHA_DEPTH_PRE_PASS
      		material.depth_draw_mode = BaseMaterial3D.DEPTH_DRAW_ALWAYS
      		material.albedo_color.a = alpha
      
      func _fade_in() -> void:
      	var tween = create_tween()
      	tween.set_ease(Tween.EASE_IN)
      	tween.tween_method(_set_material_alpha, 0.0, 1.0, fade_in_duration_seconds)
      

      The key being setting the material properties and using its albedo color to update transparency. The depth draw mode is needed, otherwise the result is ugly with jagged pixels during the tween.

      Getting to the solution was the hard part. Searching forum posts I was led down some rabbit holes like using shaders—overkill for this situation. (There is a cool site though, for when I do end up needing custom shaders: https://godotshaders.com/.) Asking an LLM also didn't help much, probably because my prompt was wrong. I tried again just now and it gave me something closer to a correct solution, but missing some parts like the depth draw mode, which (by trial-and-error and reading the docs) I found is necessary for a good quality render, when using transparency.

      Another small pitfall I found was that trying to change the material.transparency caused stutter. I was trying to disable transparency when the mesh was at 100% alpha, since I figured opaque rendering is cheaper. However I speculate the engine recompiles the shader when I turn off transparency, which causes the stutter. So I don't modify the material.transparency beyond that initial setting.

      Also thought I'd mention, I'm using free placeholder art assets from https://kenney.nl/ - an amazing resource.

      Aside: Shaders

      During this I learned that adding shaders to an imported 3D model in Godot is somewhat convoluted:

      1. Import the .glb model
      2. Clone the auto-created scene to an inherited scene, because I'm not allowed to directly edit that auto-created scene
      3. Extract the material (UV colormap image) from the .glb by double-clicking it in the FileSystem tab
      4. Apply the extracted material to the mesh under Surface Material Override
      5. Add a "Next Pass" material, a ShaderMaterial, to that surface material override
      6. Create the shader script
      7. Pass in parameter values from the GDScript to the shader script using code like: shader_material.set_shader_parameter("color", Color(1.0, 1.0, 1.0, alpha))

      This didn't work so well for me though, because the shader I was using was changing the ALBEDO and turning things white. If I knew anything about 3D programming I'd probably find a way to update the existing color value at each pixel, instead of setting albedo white everywhere. The end result of the shader I was using was that the models were turning too white. So that was a dead end.

      Anyway mainly leaving this here as reference for posterity. Feel free to share a story or constructive feedback if there's anything.

      21 votes
    3. GUI dev using Godot

      Most of my professional work involves the plumbing side of things (e.g. APIs, integration etc.) So I've come to front end quite late, and dabbled in HTML/CSS/JS frameworks, and tried to create a...

      Most of my professional work involves the plumbing side of things (e.g. APIs, integration etc.) So I've come to front end quite late, and dabbled in HTML/CSS/JS frameworks, and tried to create a thing or two using Python GUI frameworks too.

      After spending a bit of time learning about game development in Godot, I decided it might be fun to try and build a simple desktop app in the engine, and it surprised me how easy it was, it took me a day or two to build a basic git front end.

      Of course, if you ever need to build something outside of GDscript, it'll require building an extension, probably in C++, but it makes me wonder if those sorts of tools exist outside of games engines? It feels like game devs get a wonderful tool that they use as a garnish on top of the real work (the game).

      I'd be keen to know what people who regularly build front end tools tend to prefer to use.

      ETA: I just realized the title is a poor summary of what I'm actually asking about, sorry!

      22 votes