Home
Project
Post
Bamboo Master
Avoid flying arrows
본 프로젝트는 한국디지털미디어고등학교 자료구조 주제탐구 활동을 위해 진행한 프로젝트입니다. 👉 주제탐구 활동 보고서
주제탐구 활동은 책을 선정하여 읽은 뒤에 책의 주제와 관련된 내용으로 프로젝트를 진행하는 활동이었습니다. 저는 이기적 유전자를 읽고 유전자의 특성, 유전의 과정과 결과를 프로젝트로 구현하고자 했습니다.
이기적 유전자는 유전자의 절대성과 우선성에 대한 내용입니다. 작가 리처드 도킨스는 유전자가 띄는 성향을 말하며 이타적이지 않고 다음 세대에 전해지는 목적을 이룬다고 하였습니다. 이러한 특성들을 띄는 알고리즘인 유전 알고리즘을 사용하고자 했습니다.
우선 인공 신경망과 유전 알고리즘을 어떤 프로젝트로 기획할 수 있을까 고민하였고, 옆에서 죽림고수를 자주하는 친구에게서 아이디어를 얻어 죽림고수를 플레이하는 인공 신경망을 유전하는 프로젝트를 기획하였습니다.
우선 첫 계획대로 죽림고수를 만들었습니다. 자세한 내용은 아래 블로그에서 확인바랍니다.
사실 처음에는 인공 신경망은 고려하지 않았고 랜덤하게 방향키 (←, ↑, ↓, →)를 누르는 개체를 만들고 상속하면 된다고 생각하였습니다. 그래서 우선 유전 알고리즘에 대해 조사했습니다.
하지만 랜덤하게 방향키를 누르는 개체를 만드는 것도 로직이 분명하지 않았고, 끝없이 랜덤하게 방향키를 개체가 누르더라도 방향키 입력은 감지되었으나 캐릭터가 움직이지 않았습니다. 그래서 계속 고민하였고, 결국 방향키 입력을 포기하고 인공 신경망을 도입하기로 했습니다.
인공 신경망을 가진 개체를 만들었고, 이를 유전하는 과정을 구현하였습니다.
유전 알고리즘의 간단한 매커니즘은 알고 있었지만 코드로 적용할 때 어떤 요소를 고려하여 플로우를 짜야하는지 몰랐는데 이번 활동을 통해 유전 알고리즘의 적용 방법에 조금 더 가까워지게 되었습니다. 그리고 인공 신경망을 조금이나마 공부하면서 인공 신경망의 구조에 대해 알게되었습니다. 평소에 Frontend와 Backend를 많이 개발하는 편이어서 이런 알고리즘들과 거리를 멀리 하였으나 이번 기회로 조금더 가까워지고 더 다양한 기술에 도전할 수 있게 된 것 같아 기쁩니다.
그리고 활동을 진행하면서 어려움을 많이 겪었는데 그 때마다 친구의 도움을 받아 해결했고, 주변에 저를 도와줄 수 있는 사람들이 있다는 점이 느껴져서 좋았습니다.
👉 유전 알고리즘, 인공 신경망 적용 죽림고수 Github
👉 유전 알고리즘, 인공 신경망 적용 죽림고수 블로그 포스트
Copyright ⓒ 2025 sid12g All rights reserved.