본문 바로가기

전체 글45

[1인 게임 개발]Cannon vs Cannon Cannon vs Cannon은 제가 두번째로 개발한 게임입니다. 전작 개발중 느낀 아쉬웠던 부분 이번게임에서 개선하려 노력했습니다.게임 전체적으로 이벤트를 적극적으로 활용했습니다.원씬으로 구성했습니다.게임디자인을 전작보다 세련되게 만드려고 노력했습니다.게임 점수에 따라 얻을수있는 콜렉션을 만들어 추가적인 콘텐츠를 만들었습니다.추가적으로 외부 라이브러리도 이게임을 만들며 처음 써봤습니다(Dotween). 이번 게임도 전작과 같은 하이퍼 캐쥬얼 게임입니다. 프로젝트는 8월 20일에 시작되어 9월 13에 끝났습니다.  코드: https://github.com/hangilzzang/Canon-VS-Cannon게임링크(플레이 스토어): https://play.google.com/store/apps/details.. 2024. 10. 7.
[1인 게임 개발]Baseball Swing! Baseball Swing!은 유니티를 독학하고 처음 개발한 게임입니다. 유니티를 선택한이유는 저는 모바일 게임을 개발해 광고수익을 얻으려는 목적으로 게임 개발을 시작하기로 마음 먹었고, 현재 모바일게임 개발에 대중적으로 쓰이는 엔진이 유니티였기 때문이었습니다.저는 게임 개발에 처음 입문하는것을 고려하려 비교적 개발 난이도가 낮은 하이퍼 캐쥬얼 게임을 개발하기로 결정했습니다. 유니티 독학기간 포함, 프로젝트는 6월 7일에 시작되어 8월 21에 끝났습니다.  코드: https://github.com/hangilzzang/Baseball-Swing-게임링크(플레이 스토어): https://play.google.com/store/apps/details?id=com.baseballswing.gilgames Ba.. 2024. 10. 7.
[Unity]social.report score leaderboard not found Start()에 PlayGamesPlatform.Activate(); 코드 삽입을 까먹지 않았나 확인합니다. 2024. 10. 6.
[Unity]WARNING:We recommend using a newer Android Gradle plugin to use compileSdk = 34 maven { // url (unityProjectPath + "/Packages/com.google.play.games/Editor/m2repository") // Assets/GooglePlayGames/com.google.play.games/Editor/GooglePlayGamesPluginDependencies.xml:11 url (unityProjectPath + "/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository") // Assets/GooglePlayGames/com.google.play.games/Editor/GooglePlayGamesPluginDependencies.xml:11} 기존 코드(주석 처리된 부분).. 2024. 10. 5.
[Unity] AndroidJavaException: java.lang.ClassNotFoundException: com.google.android.gms.games.PlayGames 1. 아래 스크린샷 따라해보기 proguard configuration-keep class com.google.android.gms.games.PlayGames { *; }-keep class com.google.android.gms.games.leaderboard.** { *; }-keep class com.google.android.gms.games.snapshot.** { *; }-keep class com.google.android.gms.games.achievement.** { *; }-keep class com.google.android.gms.games.event.** { *; }-keep class com.google.android.gms.games.stats.** { *; }-keep c.. 2024. 10. 4.
[딥러닝2]신경망의 순전파 저번 포스팅에서는 단층 퍼셉트론의 기본 개념과 한계에 대해 살펴보았고, 비선형 문제를 해결하기위해 다층 퍼셉트론이 필요함을 이해했습니다. 이번 페이지에서는 신경망의 순전파, 즉 주어진 입력에 대해 신경망의 최종적인 예측까지의 과정을 살펴보겠습니다.신경망의 구현 신경망은 입력층, 은닉층, 출력층의 세 부분으로 구성됩니다. 각 층(Layer)은 뉴런(노드)으로 이루어져있으며, 뉴런은 다수의 신호를 입력으로 받아 정보를 처리하고 다음층의 뉴런으로 신호를 전달합니다.입력층신경망의 첫번째 층으로 일반적으로 0층으로 칭해집니다. 입력층의 뉴런수는 신경망으로 들어오는 입력 데이터의 특성(feature)수와 같은데 예를들어 28x28픽셀 크기의 이미지를 입력으로받는 신경망의 경우, 입력층에 784(28x28)개의 노드.. 2024. 1. 8.
[딥러닝1]퍼셉트론 이 포스팅 시리즈는 딥러닝에 대해 깊이 있게 이해하고자 하는 여정의 일환으로 작성되었습니다. "밑바닥부터 시작하는 딥러닝 1"이라는 책을 베이스로 공부했으며, 학습 중에 생기는 추가적인 궁금증은 chatgpt, 구글링, 유튜브 등 등 모든 방면으로 해소하고자 노력했습니다. 만약 내용 중 잘못된 부분을 발견하시면, 댓글로 알려주시면 매우 감사하겠습니다.퍼셉트론의 정의퍼셉트론(Perceptron)은 1957년에 Frank Rosenblatt에 의해 처음 발명되었으며, 다수의 신호를 입력으로 받아 하나의 신호를 출력하는 신경망의 매우 단순한 형태이다.[그림 1] 여기 2개의 입력신호를 받는 퍼셉트론의 예시가 있다. $x_1$과  $x_2$는 입력 신호이며, 각각의 신호는 가중치 $w_1$과 $w_2$에 의해 .. 2023. 12. 26.
[강화학습10]DQN(Deep Q-Network) 새로운 방법론의 필요성 지금까지 배운 강화학습 지식을 이용해 어떤 문제에 대해 강화학습 알고리즘을 적용하고 싶다면 다음과 같은 결정트리(Decision Tree)를 이용할 수 있다. 우리는 지금까지 MDP의 크기가 작을 때 적용할 수 있는 테이블 기반 방법론에 대해 배웠다. MDP의 크기가 클 때 테이블 기반 방법론을 사용하지 못하는 이유는 간단하다. 테이블을 만들 수 없기 때문이다. 예를 들어 바둑의 고유한 상태의 개수는 $10^{170}$개이고 $10^{170}$B를 저장할 수 있는 컴퓨터는 아직 이 세상에 없다. 만약 $10^{170}$개의 상태를 저장할 수 있다고 해도 제대로 된 학습이 이루어지기 위해서는 각상태를 여러 번 방문해봐야 한다. 따라서 MDP의 크기가 큰 경우에는 새로운 방법론이 필요.. 2023. 12. 20.
Q-learning 기반 틱택토 강화학습 모델 개발 들어가기 전에...여태까지  강화학습 전반에대해 학습한 내용을 기반으로 틱택토 게임을 플레이하는 강화학습 모델을 개발해보았습니다. 틱택토 게임을 선택한 이유는 다음과 같습니다.1. 틱택도 게임특성상 가능한 경우의수가 많지않아 모든 Q value를 Q table에 표시할수있습니다.2. 나중에 구현하고자 하는 오목 강화학습 모델이나 바둑 강화학습 모델과 마찬가지로 1대1 보드게임이라는 환경적인 유사성이 있어 향후 프로젝트에 도움이 될것이라 판단했습니다. 전체코드는 포스팅말미의 깃허브주소를 참고해주세요.구현 목표1. 실제 틱택토 게임을 만든후, 강화학습모델과 연동시켜 사람과 틱택토 모델간의 대국이 가능하게 구현하는것(play기능).2. 에피소드가 진행되며 발전하는 에이전트를 확인할수있도록 구현하는것(repla.. 2023. 12. 15.