안녕하세요 아론입니다.
이번 글의 주제는 알고리즘 공부의 의미가 무엇인가 또는 필수인가에 관련해서 글을 써보려합니다.
우선 제 주관적인 답은 게임 개발을 하시는 개발자분들은 서버 클라 모두 반드시 필수라 생각합니다.
Why?
게임 개발에서 알고리즘이 필수인가 이유를 제 실무경험들과 연관해서 짧게 적어보려합니다.
면접 또는 시험
우선은 당연하게도 저를 포함한 주니어 개발자들은 이들의 코딩 능력을 평가하기위해서 기본적인
알고리즘을 반드시 알아야합니다 업체마다 코딩시험을 필요로 하지않는 경우도 있지만
기술면접에서는 기본적인 배열과 가변배열의 차이 또는 링크드 리스트의 구현 등을 기본적으로 출제하거나 물어보는경우가 있습니다. 이러한 상황을 대처하는방법으로 해답을 미리 외우고 가도 괜찮지만 정확한 해답을 알기위해서는 직접 이런것들을 직접 구현하고 이해하는편이 오랫동안 기억에 남습니다.
개발 능력 향상
저는 실무경험 이전에서는 알고리즘을 실용성이 없다고 항상 생각하고 공부를 하지않았습니다.
알고리즘이란 시험에만 필요할뿐 실무에 응용할일이 전혀 없다 생각해왔지만
생각보다 실무에서 알고리즘은 매우 중요했습니다.
공부를 등한시한 저는 원하는 기능을 구현할때 고통을 받았고 소잃고 외양간 고치듯 알고리즘을 공부하게됩니다..
알고리즘을 이용한 게임 구현 예시
위 기능은 제가 구현한 게임의 플레이어 컨트롤의 일부 입니다.
플레이어를 드래그앤 드랍으로 이동할 좌표를 지정하고 드랍한 목표 타일로 자동으로 플레이어를 이동시키는 기능입니다.
여기서 중요한 기능은 이동 타일 경로에서 벽이나 오브젝트가 존재하면
존재하지않는 타일로 피해가며 최적의 경로로 이동해야합니다.
위 기능을 구현하기 위해서라도 여러분은 알고리즘의 이해도가 있어야만합니다.
로직 구현의 바탕은 A* 알고리즘을 바탕으로 휴리스틱은 멘하탄 휴리스틱 방식으로 계산하여 구현했습니다.
A*를 구현할 당시 저는 유니티는 곧잘 다뤘지만 bfs 알고리즘조차 모르던 시점에서 구현하여 더 애를 먹었습니다.
여러분이 A*란 알고리즘을 알고있는지 또는 넓이 우선 탐색, 깊이 우선탐색이 무엇인지 모른다면 이런 기능을 구현하기에 어려움이 많습니다.
알고리즘을 공부해야하는 이유는 지금 제가 설명한 2가지 주관적인 내용 말고도 더욱 많을거라 생각합니다.
이미 중요성을 알지만 알고리즘 공부의 방법을 모르시는 여러분께 도움이 되고자 다음글부터 알고리즘에 대해 하나하나
직접 구현해보는 시간을 가져보려합니다 가변배열,리스트,그래프를 예제를 보지않고 시간을 들이며 구현을 해보면
기억에 오래 남고 해답지를 외우고 답하는것보다 원활하게 다른사람에게 알고리즘을 설명하는것이 가능해집니다.
'알고리즘' 카테고리의 다른 글
그래프 알고리즘이란 (2) | 2024.03.18 |
---|---|
링크드 리스트를 왜 알아야하는가 (0) | 2024.01.20 |
동적배열 왜 반드시 알아야하는가 (0) | 2024.01.16 |