목록TIL (8)
[게임개발자] 레드핑
코딩을 하다 보면 우리는 종종 완벽함을 추구하게 됩니다. 처음부터 깨끗하고 효율적인 코드를 작성하고 싶어 하고, 버그 없는 로직을 꿈꾸죠. 하지만 현실은 다릅니다. 처음 코드를 짜는 순간부터 걸작을 만들어내는 사람은 거의 없습니다. 오히려 다작이 명작을 만든다는 말이 코딩에서도 진리처럼 느껴질 때가 많습니다.나쁜 코드, 좋은 코드의 시작점코드를 잘 쓰고 싶다면, 역설적이게도 나쁜 코드를 많이 짜보는 것이 첫걸음일 수 있습니다. 나쁜 코드란 무엇일까요? 가독성이 떨어지거나, 비효율적이거나, 심지어 동작하지 않는 코드일 수도 있습니다. 하지만 이런 코드를 작성하는 과정에서 우리는 배우게 됩니다. "아, 이렇게 하면 안 되겠구나", "이 방식은 너무 복잡해"라는 깨달음이 쌓이면서 점점 더 나은 해결책을 찾아가..
안녕하세요, 여러분! 오늘은 게임 개발에서 종종 간과되지만 매우 중요한 주제인 "나쁜 코드의 가치"에 대해 이야기해보려고 합니다. 저는 현재 Godot 엔진으로 인디 게임을 개발 중인데요, 스킬 시스템(예: BleedSkill과 Timer를 활용한 쿨다운 로직)을 구현하면서 깨달은 점들을 공유해볼게요. 특히, "완벽한 코드"만 고집하다가 놓칠 수 있는 기회와, "나쁜 코드"가 가진 의외의 장점에 대해 이야기해보려 합니다.나쁜 코드란 무엇일까?먼저 "나쁜 코드"가 뭔지 정의해볼게요. 나쁜 코드는 보통 다음과 같은 특징을 가집니다:가독성이 낮음: 변수 이름이 a, b 같은 의미 없는 이름이거나, 주석이 없어서 이해하기 어려움.구조가 엉망: 한 함수가 500줄 넘게 길거나, 모든 로직이 if-else로 얽혀 ..

게임 레벨 디자인을 위한 현대적인 툴, LDTKLDTK는 2D 게임 레벨을 제작하기 위한 강력하고 직관적인 레벨 에디터입니다. DeadCells의 개발사 Motion Twin이 만든 이 오픈소스 도구는 게임 개발자들 사이에서 큰 인기를 얻고 있습니다. 주요 특징:사용자 친화적인 인터페이스: 드래그 앤 드롭 방식의 직관적인 타일 배치와 관리가 가능합니다. 다양한 레이어 시스템: 타일, 엔티티, 오브젝트 등 여러 레이어를 동시에 관리할 수 있어 복잡한 레벨 디자인도 효율적으로 제작할 수 있습니다.강력한 자동타일링: 스마트한 자동 타일링 시스템으로 타일 배치 시간을 크게 단축할 수 있습니다.유연한 내보내기: JSON 형식으로 레벨 데이터를 내보낼 수 있어 Unity, Godot, GameMaker 등 다양한 ..

🎯 구현 내용버튼 클릭 시 Discord 초대 링크를 브라우저에서 자동으로 열도록 구현했습니다.💻 코드 구현func _on_discord_button_pressed(): OS.shell_open("https://discord.gg/YOUR_DISCORD_INVITE_LINK")📝 핵심 포인트OS.shell_open() 함수 사용시스템 기본 브라우저에서 URL 자동 실행간단하고 직관적인 방법으로 구현🔍 주의사항실제 사용 시 YOUR_DISCORD_INVITE_LINK 부분에 실제 링크 입력 필요
🔍 문제 상황오늘은 Godot 4에서 캐릭터가 좌우로 움직일 때 무기 이펙트의 방향을 자연스럽게 전환해야 하는 문제를 해결했습니다. 캐릭터가 왼쪽을 보고 있을 때와 오른쪽을 보고 있을 때 무기 이펙트가 올바른 방향을 향해야 했습니다.💡 해결 방법# 이펙트의 X축 위치값에 절대값을 적용var effect_position = abs(position.x)abs() 함수를 사용하여 위치값의 절대값을 구함으로써, 캐릭터의 위치와 상관없이 이펙트가 항상 올바른 방향을 향하도록 만들었습니다.📝 상세 설명abs() 함수는 어떤 수의 절대값을 반환합니다예: abs(-5) = 5, abs(5) = 5이를 통해 캐릭터가 어느 방향을 보고 있든 이펙트의 방향이 자연스럽게 대칭됩니다🎮 적용 결과캐릭터가 왼쪽을 볼 때: ..
📝 학습 내용오늘은 Godot 4에서 Area2D를 활용하여 Zone 내 적 캐릭터들을 효과적으로 관리하고 타겟팅하는 시스템을 구현했습니다. Array를 활용하여 여러 적을 순차적으로 처리하는 방법을 학습했습니다.🔍 구현 목표Area2D를 통해 들어오는 적들을 감지하고 추적한 번에 한 명의 적만 타겟팅하여 공격현재 타겟이 제거되면 다음 적으로 타겟 전환💡 주요 구현 내용1. 적 감지 및 저장extends Area2Dvar enemies_in_range: Array = []var current_target = nullfunc _ready(): # Area2D 시그널 연결 body_entered.connect(_on_body_entered) body_exited.connect(_on_b..