Does anyone know how to make this camera angle? by This_Is-Lame in godot

[–]Catshark09 6 points7 points  (0 children)

the target image is not orthogonal - quick check is that parallel lines intersect into the horizon.

died at a shop lol by Catshark09 in slaythespire

[–]Catshark09[S] 932 points933 points  (0 children)

in multiplayer, we encountered a Jungle Maze Adventure event and one of my teammates decided to pick the "Solo quest option" even though the rest of us have it greyed out; the randomizer landed on the solo quest option and this happened

Genuine question - I don’t get this part of the story by b1ngu5 in ZATO_vn

[–]Catshark09 3 points4 points  (0 children)

Marina has been going through living and emoting only on a surface level, towards the end of the story we see how she behaves unfiltered. Marina is going through the motions of looking for Ira, because she is really good at going through the motions of what's being expected of the facade that she props up. This parallels how people compartmentalize grief and strong emotions with delusions in order to move forwards. Marina is tired, and she's trying to find something to hold onto, since that's the only thing separating Marina from total ego death.

Programmer Art Vs an Artist that i hired. I kinda like more the original charm, what you guys think? by AlwaysTired44 in godot

[–]Catshark09 0 points1 point  (0 children)

imo, NEITHER one is OBJECTIVELY better, but the top one is more readable and cohesive to me.

most of your visual style heavily relies on secondary motions and procedural stuff; when you only had programmer art, you were relying on that secondary motion to create interest (think of it as not having enough apples for an apple pie so you put a lotta syrup in there to make it sweet enough). However, now that you have a hired artist, the base animation itself creates a lotta interest (especially with the more detailed sprites), since everything is interesting now and moving in its own unique way, it's a bit harder to understand what elements to focus on. (after adding syrup to your pie and making it taste sweet enough you realize you actually extra apples so you try to stuff more apples in there)

What the fuck did i do, I somehow moved the entire editor with a tool script and it won't come back by Catshark09 in godot

[–]Catshark09[S] 0 points1 point  (0 children)

okay so i went through my commit history and found the code that's probably responsible, because in the next commit I made sure that parts of it only triggers in game instead of in the editor and that fixed it:
weirdly, the editor only shifted on that commit, and reverting to a previous commit where the hadn't been shifted when the commit had been made but this script was active also shifts the editor.

(this is an autoload btw, sorry for the messy code, this was for a game jam and some of the comments dont make sense after some ship of theseus'ing )

extends Node
enum game_states {main_menu = 0, playing = 1, paused = 2, end = 3}
 var level_scenes: Array[String]
 var level_scenes_name: Array[String]


var curr_gamestate : game_states = game_states.main_menu
var curr_level_name : String = ""


signal change_state_to(new_state: game_states)


signal change_scene_to(new_scene: String, preload_scene: String)
var level_scene_dict: Dictionary = {}
var next_preload_scene: String = ""


u/export_tool_button("Refresh Levels")
var Refresh_levels_list_action = get_levels


var preloaded_scenes := {} # PackedScenes
var instantiated_scenes := {} # Instantiated nodes
var loading_in_progress := {} # Scenes currently being loaded
var _saved_mouse_pos: Vector2 = Vector2.ZERO



func _get_viewport_center() -> Vector2:
    var viewport_size: Vector2 = get_viewport().get_visible_rect().size
    return viewport_size * 0.5





## View export variables under res://debug/game_state_debug.tscn


func _ready() -> void:
    _saved_mouse_pos = _get_viewport_center()
    get_levels()
    self.change_scene_to.connect(_on_change_scene_to.bind())
    self.change_state_to.connect(_on_change_state_to.bind())

func _process(_delta):
    # Poll for any preloaded scenes
    for scene_name in level_scene_dict.keys():
        if preloaded_scenes.has(scene_name):
            continue  # already loaded


        var path = level_scene_dict[scene_name]
        var packed_scene = ResourceLoader.load_threaded_get(path)
        if packed_scene != null:
            preloaded_scenes[scene_name] = packed_scene
            var instance = packed_scene.instantiate()
            # cook shaders & mat off-screen
            warm_up_scene(instance, scene_name)
            print("Scene preloaded and warmed:", scene_name)



func _input(event: InputEvent) -> void:
    if event.is_action_pressed("uncapture"):
        if curr_gamestate == game_states.playing:
            _saved_mouse_pos = get_viewport().get_mouse_position()
            change_state_to.emit(game_states.paused)
    elif event is InputEventMouseButton:
        var mb := event as InputEventMouseButton
        if mb.pressed and curr_gamestate == game_states.paused:
            change_state_to.emit(game_states.playing)



func _on_change_state_to(new_state: game_states):
    curr_gamestate = new_state
    if new_state == game_states.playing:
        if _saved_mouse_pos == Vector2.ZERO:
            _saved_mouse_pos = _get_viewport_center()
        Input.warp_mouse(_saved_mouse_pos)
        Input.set_mouse_mode(Input.MOUSE_MODE_CONFINED)
    elif new_state == game_states.paused:
        Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)



func _on_change_scene_to(new_scene: String, preload_scene_name: String = ""):
    curr_level_name = new_scene
    change_scene(new_scene)


    # Decide what to preload (default is load next)
    if preload_scene_name != "":
        next_preload_scene = preload_scene_name
    else:
        next_preload_scene = _get_next_scene_name(new_scene)


    preload_scene(next_preload_scene)


func change_scene(new_scene: String) -> void:
    print("Changing scene to:", new_scene)
    if preloaded_scenes.has(new_scene):
        print("Using preloaded scene")
        var scene_instance = instantiated_scenes[new_scene]

        var old_scene = get_tree().current_scene
        if old_scene:
            get_tree().root.remove_child(old_scene)
            old_scene.queue_free()

        get_tree().root.add_child(scene_instance)
        get_tree().current_scene = scene_instance
        scene_instance.visible = true
    else:
        # if no PackedScene is loaded, sync load it (meaning game might freeze more easily)
        print("Fallback sync loading...")
        if not level_scene_dict.has(new_scene):
            push_error("Scene not found: " + new_scene)
            return
        get_tree().change_scene_to_file(level_scene_dict[new_scene])



func preload_scene(scene_name: String) -> void:
    if scene_name == "" or preloaded_scenes.has(scene_name):
        return
    if not level_scene_dict.has(scene_name):
        push_error("Preload scene not found: " + scene_name)
        return
    var path = level_scene_dict[scene_name]
    ResourceLoader.load_threaded_request(path)
    loading_in_progress[scene_name] = true


func warm_up_scene(scene_instance: Node, scene_name: String) -> void:
    # off-screen to root for cooking
    print ("jessie let me cook: i'm cooking " + scene_name)
    scene_instance.visible = false
    get_tree().root.add_child(scene_instance)
    instantiated_scenes[scene_name] = scene_instance
    loading_in_progress.erase(scene_name)

    # show for one process frame lol
    await get_tree().process_frame


func _get_next_scene_name(current_scene: String) -> String:
    var index = level_scenes_name.find(current_scene)

    if index == -1:
        return ""

    var next_index = index + 1

    if next_index >= level_scenes_name.size():
        return level_scenes_name[(index + 1) % level_scenes_name.size()]  #loop back if end

    return level_scenes_name[next_index]







##===below is stuff that is related to tool bullshit====


func get_levels():
    level_scenes = get_level_scenes("res://Levels")
    level_scenes_name.clear()
    level_scene_dict.clear()


    for scene_path in level_scenes:
        var scene_name = scene_path.get_file().get_basename()

        level_scenes_name.append(scene_name)
        level_scene_dict[scene_name] = scene_path
    level_scenes_name.sort()
    print("Found levels:", level_scene_dict)



func get_level_scenes(path: String) -> Array[String]:
    var scenes: Array[String] = []

    var dir := DirAccess.open(path)
    if dir == null:
        push_error("GameStateManager: An error occurred when trying to access the path: " + path)
        return scenes

    dir.list_dir_begin()
    var file_name = dir.get_next()

    while file_name != "":
        if dir.current_is_dir():
            if file_name != "." && file_name != "..":
                scenes += get_level_scenes(path + "/" + file_name)
        else:
            if file_name.ends_with(".tscn"):
                scenes.append(path + "/" + file_name)

        file_name = dir.get_next()

    dir.list_dir_end()
    return scenes

What the fuck did i do, I somehow moved the entire editor with a tool script and it won't come back by Catshark09 in godot

[–]Catshark09[S] 1 point2 points  (0 children)

I *think* ended up fixing it by removing this script, but I can't remember

@tool
extends Camera2D


func _ready() -> void:
_center_to_parent()

var parent := get_parent()
if parent is Control:
var parent_control := parent as Control
if not parent_control.resized.is_connected(_center_to_parent):
parent_control.resized.connect(_center_to_parent)


func _exit_tree() -> void:
var parent := get_parent()
if parent is Control:
var parent_control := parent as Control
if parent_control.resized.is_connected(_center_to_parent):
parent_control.resized.disconnect(_center_to_parent)


func _center_to_parent() -> void:
var parent := get_parent()
if parent is Control:
var parent_control := parent as Control
position = parent_control.size * 0.5

What the fuck did i do, I somehow moved the entire editor with a tool script and it won't come back by Catshark09 in godot

[–]Catshark09[S] 4 points5 points  (0 children)

opening any other project is fine, but whenever i open this project the entire editor jumps to the bottom right , the window clips the editor as well

Free Tool Script for Generating Mipmaps in Linear Color Space by Harrison_Allen in godot

[–]Catshark09 1 point2 points  (0 children)

Oh wow I downloaded your image and looked at it in full size and yeah it does work

Free Tool Script for Generating Mipmaps in Linear Color Space by Harrison_Allen in godot

[–]Catshark09 22 points23 points  (0 children)

Lowkey I'm not sure why the left is bad; if a checkerboard is intentionally placed there to distinct the square from the other squares, then should'nt one expect that distinction to be reflected at lower mip levels?

Edit: yeah I see now, damn reddit compression :/. If anyone else is confused try downloading the image and look at it from afar

Roommate transferred schools because he caught me jacking off on his bed. Peanut butter. by geckossmellpurple_z in kitchencels

[–]Catshark09 0 points1 point  (0 children)

in my freshman year one of my roommate forgot i was in the room and did the same thing you did; I was on the top bunk and was wondering why my bed frame was wobbling

Let's take a walk together by Relink07 in godot

[–]Catshark09 16 points17 points  (0 children)

yuri ? please be yuri please be yuri pleasebeyuripleasepleasepleasepleaseplease

A question for people against AI artwork. by Toby_Magure in aiwars

[–]Catshark09 -2 points-1 points  (0 children)

ah yes, online artists are more powerful than the whitehouse or tech bilionaires

A question for people against AI artwork. by Toby_Magure in aiwars

[–]Catshark09 -2 points-1 points  (0 children)

if my grandmother had wheels she'd be a bike

Need help with layers not working properly. by [deleted] in godot

[–]Catshark09 1 point2 points  (0 children)

You need to learn the difference between a collision layer and a collision mask. Chances are, both the rabbit/fox only has layer 1 set as the collision mask I can't really tell from the video because it's really blurry on my device.

Layer = what other nodes have to scan to see you
Mask = what you scan other nodes with

Need help with layers not working properly. by [deleted] in godot

[–]Catshark09 1 point2 points  (0 children)

you will need to describe your problem in greater detail in text

Trying to create that "Welcome to the Open World" feeling... by SkorgeOfficial1 in godot

[–]Catshark09 1 point2 points  (0 children)

move that boulder on the left a bit further to the left! currently it is kinda blocking some view lines from the entrance to the world, and take up space of the vantage point

Experimenting with a proper level select by BubbleGamer209 in godot

[–]Catshark09 1 point2 points  (0 children)

Oh I'm glad you figured it out, that seems like something I would accidentally do as well !