게임에서 타격감이란 굉장히 중요합니다.
게임에서 제일 중요한 재미의 한 부분을 차지하고 있기 때문입니다.

간단하게 화투를 생각해볼까요? 그냥 밋밋하게 치는것과 탁탁 소리를 내면서 치는것 어떤것이 더 재밌을까요? 물론 지는 사람이야 짜증나겠지만 소리가 나는게 더 재밌을겁니다.

이런 일반 보드게임도 타격감 하나로 재미가 달라지는데 전자오락은 더 하겠지요.

그래서 기존 명작게임들을 보며 느낀 타격감에 대해 한번 주저리 해보겠습니다. 다만 감성보단 공대느낌의 글이라는것만 알고계셨으면 합니다.

타격감이란건 쉽게말해서 피드백입니다. 즉, 사용자가 무슨 행동을 했고 이걸 시각적이든 청각적이든 느낌을 다시 줘서 뭔가 했다는 느낌이 들게 하는것입니다.

이런건 실제 타격이 있는(인간형이나 생물체 캐릭터조작)것 뿐 아니라 전혀 상관없는 테트리스에서도 중요합니다. 이해가 안되신다면 테트리스 블록이 바닥에 닿았을때 블록이 깜빡거리거나 탁!소리가 나는걸 보신적이 있을겁니다. 무엇보다 줄이 없어질때 아주 멋진 이펙트가 펑펑 터집니다. 이게 타격감입니다.


시각적으로 화려하게 타격감을 구현한 테트리스 이펙트

이걸 극대화해서 시각적으로 아주 멋지게 만든 테트리스 이펙트라는 게임도 있습니다. 테트리스 주제에 눈과귀가 즐겁습니다.

또한 리듬게임류도 타격감이 엄청 중요합니다.
버튼식은 촉감피드백이 있기에 기본 타격감이 있고 화면 이펙트정도만 신경쓰면 되지만 터치식은 그게 없어서 별의별짓을 다합니다.

터치식이기에 타격감을 위해 효과음과 화면흔들기를 했던 리듬게임 리플렉비트

이처럼 전혀 관계없어 보이는 장르도 타격감은 중요합니다.
그러면 진짜 타격감이 중요한 격투게임장르는 어떨까요?

일단 타격으로 먹고사는 철권시리즈를 일단 봅시다. 그냥 효과음부터가 사람끼리 부딪혔을때 나는 소리가 아닙니다. 묵직한 무언가가 부딪힌 느낌이지요. 그리고 타격이 있을때마다 카메라가 흔들립니다. 어퍼컷이면 화면이 위로 흔들리고 로우킥이면 아래쪽으로 흔들립니다. 심지어 아무관계없어 보이는 UI까지 흔들립니다. 이게 타격감입니다. 그리고 맞는 캐릭터는 하늘을 날아가다시피 쓰러집니다.

그냥 시각임팩트만으로 타격감이 미쳐돌아가는 철권시리즈



상당히 실제와 다른 과장된 움직임이지만 이 덕에 내가 강력한 공격을 했다는 느낌을 줄 수 있습니다.

킹오브파이터즈 94~13까지 같은 2D격투게임도 타격감이 상당합니다. 일단 이펙트 이미지가 굉장히 큽니다. 초필살기 같은 큰 공격을 성공하면 화면이 잠시 멈췄다가 맞은 캐릭터는 저 멀리 날아갑니다. 화면도 깜빡거리면서 강력한 필살기라는 느낌을 줍니다.

2D격투게임에서 상당히 과장된 효과로 미친듯한 타격감을 자랑했던 킹오브 파이터즈의 전북익산(천지패황권)



여기서 느낄수 있는게 전자오락에선 시각적 타격감이 굉장히 크다는것을 알 수 있습니다. 특히 화면 흔들기는 실제로 맞거나 때리지 않았지만 그 효과를 극대화 할 수 있습니다. 그에비해 청각은 과장된 효과음외엔 타격감을 대신할것이 많이 없습니다. (대신 청각은 분위기 형성에 영향이 깊습니다)

이번엔 게임을 넘어서 영화를 보겠습니다.
라이언 일병 구하기의 상륙장면이 왜 그토록 처절하게 느껴졌을까요? 영화도 결국 시각과 청각이 모든걸 만드는 장르입니다. 4DX니 3D니 해도 결국 시각과 청각이 더 중요합니다. 카메라를 손으로 들고 찍다보니 이 흔들림이 상당했고 관객들은 자신들도 전쟁터에서 총알 사이를 달리는 느낌을 받을 수 있었기 때문입니다. 거기에 상당히 과장된 소음들로 제대로된 분위기를 만들었습니다.




이걸 게임으로 들고와 봅시다. 1인칭이 아닌 3인칭 장르라도 화면이 흔들리면 화면속 주인공이 하는 행동에 대해 때리고 맞는다는 느낌을 그대로 화면밖 플레이어에게 전달 할 수 있습니다. 여기에 상당히 과장된 효과음까지 섞이면 아주 멋진 피드백이 됩니다.

만약 카메라가 1인칭이면 걷기만 해도 화면을 흔들기 때문에 긴장감이 저절로 생깁니다. 하지만 그만큼 자연스러운 움직임이 필요하기에 도리어 피격시 과장되면 어색해질수 있기에 3인칭에 비해 타격감에 어느정도 절제가 필요합니다.

이와 반대로 타격감을 제거해서 긴장감을 올리기도 합니다. 공포게임의 경우 타격감을 최소한으로 줄여서 내 공격이 씨알도 안 먹힌다는 느낌이 들게 하기도 합니다. 특히 무적에 가까운 경우 그냥 파편만 살짝 튀게 하고 반대로 상대의 공격에는 화면이 미친듯이 흔들어서 압도적으로 만들어버립니다. 이쪽은 역타격감이라고 봐야할까요?

이제 잠시 정리 해봅시다. 게임에서 타격감을 구현하려면 피드백을 주는것이 중요합니다.

우선 시각적으로
1. 화면 흔들기. 강력한모습일 수록 더 크게 흔들면 좋습니다.
2. 불꽃등의 이펙트. 이런건 리듬게임등에서도 애용합니다.
3. 과장된 상대의 움직임.(한대맞고 저 멀리 날아가는등) 사실 WWE의 접수같은 느낌입니다.
4. 순간적으로 번쩍이는 화면. ←요즘은 자제하는 편입니다.

청각적으로
1. 과장된 효과음. 주먹으로 쳤음에도 망치로 친듯한 소리. 화투칠때 딱딱 소리를 내는것도 마찬가지입니다.
2. 과장된 주변소음. 이겼을때 환호성이나 상대의 비명등.

이미 알고있는 게임에서도 타격감만 신경써도 상당히 재밌는 게임이 될수 있습니다. 한번 게임들을 보면서 찾아보세요. 별의별 타격감을 느낄수 있을겁니다.

,

AI시대가 도래하면서 바이브코딩이란것이 생겼습니다.
사람이 "이러저러한 것을 만들테니 코드를 내놔라"라고 AI한테 명령을 내리면 거기에 맞는 코드를 AI가 써오는겁니다. 사람은 AI가 써온걸 검토해서 적용하면 되는것이고요.

그런데 이거 좀 골치아픕니다.
AI가 짜온걸 무지성으로 쑤셔넣으면 스파게티되는게 너무 당연해지거든요. 사실 AI가 해주는건 스파게티화를 막아주고 정리를 통해 사람이 이후에 정리된 코드를 쓰는게 목적인건데 이놈의 깡통은 코드를 어디서 가져오는건지 자꾸 변수를 복잡하게 꼬아버립니다.
특히 e p a 등 알파벳 한글자 변수를 어디서 자꾸 들고오는데 이걸 일일이 알아먹기 편한 변수로 고치려하니 골때립니다.

반대로 알고리즘자체는 훌륭하게 구현해줍니다. 문제는 이걸 다른 코드와 조화롭게 써준거냐 하면 역시 멋대로 적어놓은 변수와 함수이름으로 일관적이지 않은 요상한 코드로 도배됩니다.

C코드만 해도 중괄호를 K&R로 했다가 다른걸로 했다가 스페이스바를 2개를 썼다가 4개를 썼다가 중구난방입니다.

물론 들여쓰기랑 중괄호를 고치라고하면 고쳐서 가져오기도 합니다. 그런데 이건 코딩의 원칙을 지키려하니까 이게 가능한거지 일반적으로 무지성코딩하는 사람들은 이렇게 AI한테 한마디 더 해서 지키려들까 싶습니다.

처음부터 끝까지 AI한테 싹다 맡기면 일관적이고 깔끔한 코드가 나오긴합니다. 대신 이러면 검토하기 더럽게 힘듭니다. 게다가 이건 말이 안 되는게 프로그램이란건 계속 수정에 수정을 거듭해야하는데 AI에게 수정하라고 하면 또 제멋대로의 규칙과 제멋대로의 방식으로 수정을 해서 코드를 꼬아버리거든요.

코딩규칙을 엄하게 따지는 프로젝트에서 이 짓하면 욕먹는 수준이 아니라 다시는 코드를 안 받아줄겁니다. 하지만 욕을 먹어도 AI는 또 잊어버리고 또 요상하게 짜옵니다.

이렇게 해도 잘 구동되면 다행입니다.

최근에 자꾸 요상한버그가 있어서 뭔가 했더니 AI가 같은 기능을 중복으로 써줬더군요. 기능 충돌이 일어나니 엉뚱한일이 생기는 겁니다. 결국 사람이 손을보고 최적화해서 다시 적용해야했고 그냥 맨땅에 처리하는것과 비슷한 시간이 걸려버렸습니다.

AI를 활용한 코딩에대해 뭔가 편하면서도 회의감이 일어나는건 아직 발전하고 있는 분야라서 그런걸까요

,

사실 debian unstable은 불안정이라는 이름이 들어있을 정도로 불안정한 버전입니다.

하지만 사실 우분투 데스크탑도 unstable버전에서 가져올 정도로 그렇게 불안정한 버전은 아닙니다.

뭔가 이상하죠??

불안정하다고 하는데 또 불안정한 것은 아니라니

그것이 사실 Debian의 엄격한 심사때문입니다.

Debian의 안정버전은 총 4번의 테스트를 겪습니다.

Experiment(실험적)
Unstable(흔히 Sid라는 코드를 더 많이 씁니다)
Testing
Stable(현재 릴리즈판)

unstable이라고 해도 한번은 시험을 하고 들어가다보니 어느정도 거르고 지나간다는 의미입니다. 하지만 서버에서 주로 쓰이는 OS특성상 1번은 부족하다는 의미입니다.

물론 실사용을 못 할 정도는 아닙니다 Windows의 Insider Preview수준은 됩니다.

최근 업데이트를 묵히고 있다가 Sid의 업데이트를 한번 쭉 했습니다. 그런데 로그온이 안되는 문제가 생겼습니다. lightdm이 꼬인건지 어디가 꼬인건지...

그런데 Ctrl+Alt+F1로 콘솔모드로 가니 로그온이 됩니다.
그래서 거기서 startx를 하니 또 문제없이 데스크탑이 켜집니다. 대체 어디서 꼬인건지 감도 안 옵니다.

그래서 lightdm을 지우고 설정을 싹 지우고 다시 설치합니다.

안 됩니다.

결국 하다하다 그냥 Stable버전으로 포맷후 재설치 결정.

다만 home파티션을 분리해두었고 요즘은 Flatpak이 대세라 대부분은 home에 설치되다보니 프로그램 설치는 문제가 없어서 그냥 시스템만 갈았습니다. 기존에 쓰던 xfce4로 그대로 설치하니 원래 쓰던 모습 그대로 뜹니다.

다만 kime가 난리납니다. rustc를 설치하고 컴파일했는데 이번엔 rustc버전이 낮다고 합니다. 그동안 sid여서 문제없이 잘 썼다보니 kime에 rust버전 제한이 있는지 몰랐네요.

backports저장소에서 rustc를 끌고옵니다. 또 뭔가 골치아프게 안됩니다. QT가 이번에 문제를 일으킵니다. 다시 sid로 올려버릴까 싶은데 아까의 기억이 또 떠오릅니다.

그냥 기존 QT프로그램을 버렸습니다.

이쯤되니 그냥 조용히 Stable이나 써야겠습니다.

,