-
유니티 학습 프로젝트 - < 9 > TOP NEW
개요 지난 편에서 카드 선택 창을 붙였다. 카드를 고르면 체력이 오르고 공격력이 오른다. 그런데 화면에는 그게 안 보인다. 체력이 100인지 120인지, 대시를 지금 쓸 수 있는지 없는지 전부 감으로 해야 한다. 그래서 체력바와 대시 쿨타임 바를 붙이는 게 이번 작업이었다. 붙이는 것 자체는 어렵지 않았다. 오래 걸린 건 “이미 있는 걸 그대로 쓰면 안 되나” 를 확인하는 쪽이었다. 이번 글이 답할 질문. 이미 있는 신호를 재활용해도 되는지 어떻게 판단하는가? 1. 피격 이벤트를 체력바에 재활용해도 되나 체력이 깎이는 순간을 알려주는 신호는 이미 있다. 맞았을 때 발화하는 OnDamaged다.... Read More
-
유니티 학습 프로젝트 - < 8 > TOP NEW
개요 지난 편에서 레벨업이 한 프레임에 세 번 발화되는 걸 카운터 하나로 정리했다. 창은 한 번만 열리고, 카드를 고르면 남은 만큼 다시 열린다. 그런데 그 “다시 열린다”가 화면 쪽에서 사고를 냈다. 카드를 고르면 창이 사라진 채로 게임이 멈춰버렸다. 고치는 데는 오래 안 걸렸다. 두 줄의 순서를 바꾸니 동작했다. 문제는 그다음이었다. 동작하니까 일단 넣어두고 넘어갔는데, 커밋하려고 다시 보다가 “이게 왜 되는 거지?” 가 걸렸다. 그래서 되돌아갔다. 이번 글이 답할 질문. 우연히 맞는 코드를 어떻게 알아보는가? 1. 창이 사라진 채로 게임이 멈췄다 증상부터. 카드를 클릭하면 카드 창이 사라... Read More
-
유니티 학습 프로젝트 - < 7 > TOP NEW
개요 지난 편까지의 상태는 끝나지 않는 게임이었다. 좀비가 나오고, 때리면 죽고, 심장이 떨어지는데, 그게 전부다. 타이머도 없고 승패도 없고 재시작도 없다. 오늘 그걸 닫았다. 5분 타이머, 심장을 모으면 레벨업, 카드 3장 중 하나 선택, 스탯 적용, 승/패 화면, 재시작까지. 원래 일요일 몫이던 웨이브 테이블까지 당겨왔다. 그런데 오늘 가장 오래 붙잡은 건 새 기능이 아니었다. 8월 말에 “나중에 갚자”고 적어둔 한 줄이 오늘 청구서를 보내왔다. 그것도 네 번째로. 솔직히 귀찮았다.. 매번 같은 자리를 고치느니 근본부터 갈아엎고 싶었다. 그런데 그걸 지금 하면 안 되는 이유가 따로 있었다. 이번... Read More
-
유니티 학습 프로젝트 - < 6 > TOP NEW
개요 지난 편은 SpawnerBase 하나에 오전을 다 쓴 이야기였다. 그때 세워둔 기준이 오늘 다시 쓰였는데, 같은 기준을 두 번 적용했더니 답이 갈렸다. 그 이야기가 5번 섹션에 있다. 오늘 목표는 네 개였다. 경험치 드랍, 스탯업, 게임 오버, 웨이브. 실제로 끝난 건 첫 번째 하나뿐이다. 나머지 시간은 코드를 짜는 대신 “이걸 지금 만드는 게 맞나”를 확인하는 데 썼다. 그게 낭비였는지 아닌지는 아직 잘 모르겠다.. 이번 글이 답할 질문. 런타임에 조용히 틀리는 버그를, 컴파일이 안 되는 문제로 바꿀 수 있는가? 1. 오늘 만든 것 — 좀비가 죽은 자리에 심장이 뜬다 좀비를 죽이면 그 ... Read More
-
Python - < 5 > TOP NEW
개요 지난 네 편이 파이썬 문법과 라이브러리를 훑는 이야기였다면, 이번엔 알고리즘 쪽으로 한 칸 내려간다. 정렬이다. 사실 정렬은 1년 반쯤 전에 이론 정리 - < Big-O, 정렬, DFS/BFS >에서 한 번 정리했었다. 그런데 이번에 정렬을 다시 공부하다가 그 글에 구멍이 꽤 많다는 걸 알았다.. 시간복잡도만 적어놨다. 정렬을 고르는 기준이 속도 하나뿐인 것처럼 써놨다 카운팅 정렬과 기수 정렬이 아예 없다. 비교를 안 하는 정렬이 있다는 걸 그때는 몰랐다 선택 정렬 예제에 버그가 있다. 안쪽 반복문에서 j++를 써야 하는데 i++를 썼다 그래서 이번 편에서 정렬 8종을 전부 파... Read More
-
C++ - < 1 > TOP NEW
개요 C++은 예전에 멀티스레드를 공부하면서 조금 들여다본 정도가 전부다. 게임 서버를 만들 땐 Node.js가 주 언어였으니, C++은 “필요한 만큼만 열어봤던” 언어에 가깝다. 그러다 보니 문법을 제대로 정리해둔 적이 한 번도 없었다.. 이참에 C++ 정리 시리즈를 따로 열어두려 한다. 그 첫 편이 정렬이다. 바로 앞 Python - < 5 >에서 정렬 8종을 파이썬으로 정리했다. 이번 글은 같은 여덟 개를 C++로 옮긴 판이다. 그리고 코드트리에서 기수 정렬을 직접 구현하며 막혔던 세 지점을, 그때 물어봤던 순서 그대로 붙였다. 파이썬으로 쓸 땐 그냥 넘어갔던 게 C++에선 전부 손에 걸린다.... Read More
-
유니티 학습 프로젝트 - < 5 > TOP NEW
개요 지난 편은 개발 3일차 오후 이야기였다. 코어 루프가 한 바퀴 돌았고, 다 써놓은 코드가 안 돌아서 절반을 날렸다. 이 글은 그 앞의 오전 이야기다. 파일 하나를 만드는 데 오전을 통째로 썼고, 그동안 화면에는 좀비가 한 마리도 없었다. 그 파일이 SpawnerBase다. 좀비 스포너, 아이템 스포너, 보스 스포너가 나중에 다 생길 테니 공통 부모를 하나 두자는 생각이었다. 코드는 50줄이 안 되는데 그 50줄을 정하느라 결정을 여섯 번쯤 했다. 지금 와서 보면 그중 몇 개는 안 해도 됐을 결정이다. 그런데 몇 개는 안 했으면 나중에 확실히 물렸을 것들이라, 어느 쪽이 어느 쪽이었는지 남겨두려고 이 글... Read More
-
유니티 학습 프로젝트 - < 4 > TOP NEW