개발
-
[Godot 게임개발] 3. Heads up display, sound, shortcut개발/GameDev 2024. 6. 13. 23:59
이제 게임을 마무리할 차례다.Godot Docs의 'Heads up display' 부터..그동안 플레이어와 몹의 움직임과 상호작용까지 완료했으니,이제 HUD, 사운드이펙트와 단축키 설정, 기타 작업을 끝으로 마무리한다.HUD의 작업 내용- 게임 제목 표시- 점수- 게임 시작 버튼사운드이펙트의 작업 내용- 배경 음악- 게임 종료 시 음악단축키 설정- 게임패드 대응 키 설정- 게임 시작 버튼 설정기타 작업- 난이도 조절(출현하는 몹의 수, 몹의 속도, 몹의 크기, 플레이어 크기 등)- 게임 시작 시 잔여 몹 제거그리하여 완성된 게임 Dodge the Creeps!DodgeTheCreeps이후에 계속하여 3D 튜토리얼을 진행할 수도 있겠으나,일단 내가 구상중인 게임은 2D 게임이므로 더 심화된 2D 게임 개..
-
[Tidy First - 소프트웨어 설계] 00. Tidy First?개발/기타 개발 이야기 2024. 6. 12. 03:24
데이터야놀자 행사에서 받은 켄트 벡의 Tidy First.오늘부터 조금씩 조금씩 읽으면서 배운 내용을 정리해볼 생각이다.여기서는 들어가는 말을 읽으며 생각한 것들을 몇줄 써본다.'좋은 코드'라는 것은 결국 사람의 주관에 있는 것이다.객관적인 지표는 없다.동료들(혹은 기타 개발자 집단)이 좋은 코드라고 입을 모을 수 있는 코드라면 좋은 코드이다.그들의 마음엔 천 가지의 각기 다른 노하우들이 있다.때문에 실력있는 개발자는 '천 가지의 각기 다른 노하우를 가장 이상적인 모습으로 통합할 수 있는 개발자'이다.그러기 위해서는 '학습'과 '소통'이 모두 균형있게 이루어져야만 한다.그 예를 들자면.. 학습의 측면1. 타인의 노하우(책, 인터넷, Peer Review 등)를 제대로 & 빠르게 내 것으로 만들 수 있어야..
-
[Godot 게임개발] Collision Objects, Layers, Masks개발/GameDev 2024. 6. 11. 19:17
튜토리얼을 따라가다보니 Player는 Area2D를 사용한 반면 Mob은 RigidBody2D를 사용하더라.Collision Layer와 Collision Mask 라는 개념도 둘다 있길래어떤 개념이고 뭐가 다를까? 해서 관련된 공식 문서를 찾아보았다. Collision objects Coliision objects에는 4가지가 있는데,- Area2D- StaticBody2D- RigidBody2D- CharacterBody2D가 그것들이다.이 네 가지 objects는 모두..- PhysicBody2D 노드에 속하는 노드들이고.- CollisionObject2D 노드를 가진다. Area2D: 다른 오브젝트와 겹치는 것을 감지하고 시그널을 내뱉을 수 있다.중력계수(gravity)와 감쇠계수(damping..
-
[Godot 게임개발] 2. Enemy movement and collision개발/GameDev 2024. 6. 10. 23:25
Godot docs의 튜토리얼 중 'The main game scene'까지 완료했다.이번의 주요 내용은..1. 플레이어 캐릭터가 움직이는 방향을 바라보도록 만들기2. 적 캐릭터 (Mob) 만들기3. 적 캐릭터 움직임 정의하기: 화면 경계면에 보이지 않는 PathFollower를 추가해서 주기적으로 이 위치에서 몹이 생성됨: 몹이 향하는 방향은 randf_range를 통해 무작위성을 갖도록 함: 몹의 속도 또한 randf_range를 통해 무작위성을 갖도록 함4. 적 캐릭터가 화면에서 사라지면 지우기: 화면 경계면을 나가면 queue_free를 통해 사라지도록 함5. main scene을 만들고 Player와 Mob을 main scene에 적용하기6. MobTimer, ScoreTimer, StartTi..
-
[Godot 게임개발] 1. Playable Character movement개발/GameDev 2024. 6. 10. 03:08
'2D 게임 시작하기' 튜토리얼 이전까지의 개념을 Godot 공식문서 읽기를 통해 대충 익히고(노드, 씬, 트리, 인스턴스, Scripting Language 등)이제 본격적으로 예제를 통해 간단한 게임을 만들어본다.오늘은 플레이어 캐릭터 노드를 만들고 그에 따른 로직을 구현하였다.캐릭터 아트 등은 모두 튜토리얼에서 제공하는 에셋을 사용하였다.귀엽다..작업한 내용은- 캐릭터 노드 만들고 상태 정의- 캐릭터 비주얼과 애니메이션 적용- 충돌 범위 지정- 입력 키 매칭- 이동 속도 지정하고 대각선으로 이동 시 속도 정규화- 맵 밖으로 나가지 않도록 clamp 시키기등이다. 다행히 아직까진 흥미가 잘 유지되고 있다.
-
Feature Flags (기능 플래그, 기능 토글)개발/기타 개발 이야기 2024. 6. 9. 01:01
최근 업무에서 Feature Flags 혹은 Feature Toggles (이하 기능 토글)라고 불리는 방식을 도입했다.기능 토글은 새로운 코드를 배포하지 않아도 특정 기능을 켜고 끌 수 있는 기술을 말한다. 기능 토글을 쓰면..1. 서버를 유지한 상태로 기능을 키고 끌 수 있다.2. 기존에는 기능 배포를 위해 반드시 코드 변경과 배포가 수반되어야 했다. 이렇게 되면 배포 관련 지식을 가진 개발자가 반드시 개입되어야한다. 그러나 기능 토글은 훨씬 간단하므로 개발자가 아니더라도 쉽게 키고 끌 수 있다.3. 프로덕션 환경에 새로운 기능을 좀 더 부담없이 배포할 수 있다. 문제시 바로 꺼버리면 되니까..4. 기본적으로 On, Off 값을 가지는데, 일부 소수 유저 (랜덤한 10%에게만이라던지) 에게만 새로운 ..
-
[Godot 게임개발] 0. Godot 공부 시작개발/GameDev 2024. 6. 7. 16:58
최근 게임 개발에 관심이 생겨 공부를 시작했다.그런데 유니티도 조금 다뤄보고 관련 정보를 뒤지다보니Brackeys라는 유니티 게임 개발 쪽에서 유명한 (약 180만 구독자) 유튜버가Godot라는 툴이 요즘 괜찮다고 하며 약 한 달 전부터 Godot 강의를 게시하기 시작했더라. Godot는 '고닷' 혹은 '고도트' 등으로 부르고 싶겠지만실제 발음은 '고도'에 가깝고 한국에서도 고도로 부르고 있더라.아마 영어 단어가 아닌가부다.. 유니티의 경우 스크립트 언어로 C#을 쓰는 반면에고도는 파이썬과 비슷한 GDScript라는 언어를 자체 개발하여 쓰고 있다.파이썬의 특징을 가지고 있기 때문에 간편하고 배우고 쉽다는 특징이 있다. 또한 특히나 주목할 부분은 언리얼 이나 유니티 등과는 다르게 MIT 라이센스로 배포되..
-
자바스크립트 Shallow copy vs Deep copy개발/기타 개발 이야기 2024. 1. 27. 12:00
자바스크립트에서 기존에 존재하는 객체를 복사해서 새로운 무언가를 만들고 싶을 때가 있다. 하지만 그냥 새로운 변수를 선언해서 기존의 객체를 대입하면.. 새로운 변수를 변형했을 때 기존의 값까지 영향을 받아 상황에 따라 골치아파질 수 있다.. 이건 후술할 shallow copy가 된다. Shallow copy는 원본의 값을 '참조'하는 형태로 복사한다. 따라서 복사한 값의 형태가 바뀌면 그 원본의 값도 영향을 받는다. Deep copy는 원본의 값을 정말 그 값만 복사해오고, 원본과는 완전히 별개의 객체가 된다. 이를 수정하거나 해도 원본의 값은 영향을 전혀 받지 않는다. ex) //JavaScript 환경에서.. obj = {a: 1, b: 2}; new_obj = obj; new_obj.a = 3; c..