게임 공부/게임 개발 일지26 적 총알 발사 기능 추가 적이 생성될 때 한번 발사하고, 기존 적들은 일정 Tick마다 총알을 발사하도록 했다. 다음은 HP 및 플레이어 충돌 처리 할 예정.. 2020. 12. 13. 다른 게임의 에셋 이미지 가져와서 적용하는데 성공! 다른 모바일 게임을 언팩해서 비트맵 이미지를 구했다. 상업용이 아니면 저작권에 문제가 없다고 하니 괜찮겠지.. 근데 아래 이미지인데 발사되는걸 보면 투명처리가 완벽하게 되지 않았다 왜일까.. RGB 텍스쳐가 아니라 알파가 들어간 RGBA라 그런 것 같다. 찾아보니 아쉽게도 DirectDraw에선 알파값을 사용할 수 없는 듯함. 2020. 12. 9. 이미지 파일 컬러키 설정 꿀팁 인터넷에서 다음과 같이 원하는 이미지를 구했는데 원하는 파일 포맷으로 변경하면 다음과 같이 계속 배경색이 검정색으로 변경됐다. 보다시피 캐릭터 자체에 검정색이 들어있기도 하고 검정색을 컬러키로 쓰고 싶진 않아서 캡쳐 등 별 짓을 다해보다가 알아냈다.. 우선 첫번째 그림처럼 배경색이 없는 캐릭터 이미지를 파워포인트에 붙여넣는다. 그럼 다음과 같이 선택된다. 이미지에 오른쪽을 클릭하면 그림 서식이란 메뉴가 있다. 누르면 다음과 같은 창이 뜬다. 여기서 단색 채우기를 누르고 원하는 색상을 지정한다. 보통 컬러키는 마젠타로 지정하니.. 마젠타 색상은 RGB순으로 255 0 255이다. 그럼 다음과 같이 변한다. 위 이미지를 오른쪽 클릭해서 그림으로 저장을 누른다. 파일 포맷은 png로 한다. jpg는 다른 포맷.. 2020. 12. 5. [Gomoku] 중개 서버를 통해 NAT 뒤의 두 클라이언트를 연결시키려면 | 홀펀칭(hole punching) 게임을 거의 완성했는데.. 네트워크 연결이 문제다. 방을 생성한 사람이 host가 되고 방에 입장하는 사람이 peer(client)가 되도록 했다. 그리고 TCP 프로토콜을 사용한다. 개발할 땐 단순히 피어가 연결하려는 상대의 IP주소와 포트를 localhost 주소와 정해놓은 포트 번호를 사용했다. 그런데 서로 다른 네트워크를 가진 호스트를 연결시키려면 중개 서버가 필요하다. 왜? 방에 입장하려는 사람이 방을 생성한 사람의 IP 주소와 포트를 모르니까. 그래서 중개 서버를 띄우고, 호스트들이 게임을 실행하면 가장 먼저 중개 서버에게 패킷을 전달하여 자신들의 IP 주소와 포트 정보를 주고, 방에 입장하는 사람은 중개 서버가 가진 IP 주소를 이용하여 입장하도록 하면 된다. 근데 또 이게 말처럼 간단하지가.. 2020. 11. 12. [Gomoku] 스레드 설계 게임이 시작되면 각 플레이어는 번갈아 가며 게임을 진행한다. 각 플레이어는 각 턴마다 60초의 시간을 가진다. 시간이 초과되면 자동으로 패배 처리가 된다. 타이머는 1초마다 WM_TIMER 메세지 혹은 콜백 함수를 호출하며 루틴을 실행한다. 여기서 내가 필요한 것은 1초마다 시간을 감소시키고, 그 시간을 출력해서 남은 시간을 보여주는 것이다. 만약 내 턴일 경우 오목알을 놓는 순간을 제외하면 타이머가 정상적으로 동작할 것이다. 우선은 스레드 한개만 사용해도 될 것 같다. 그런데 상대방 턴일 경우 나는 recv를 호출하여 블로킹 상태에 있을 것이다. 하지만 여전히 상대방의 타이머를 1초마다 갱신해서 출력해 주어야 한다. 따라서 recv를 호출하는 스레드와 타이머를 갱신시킬 스레드가 필요하다. 멀티 스레딩을.. 2020. 11. 4. [Gomoku] 소켓 관련 함수 궁금점들 // 소켓 관련 함수에 관해 궁금한 것들 1. A 소켓을 통해 recv 함수를 호출한 상태에서, 다른 스레드에서 A 소켓을 통해 send를 할 경우 문제가 없는가? -> 아래 실험을 통해 우선은 문제는 없어보인다. 2. A 소켓을 통해 recv를 호출해서 호출 스레드가 블로킹 상태에 들어갔다. 다른 스레드에서 A 소켓을 논블로킹 모드로 변경했다. 그러면 블로킹 상태의 스레드가 블로킹 상태를 벗어나나? 아니면 계속해서 블로킹 모드를 유지하나? 유지한다면 기존 recv 동작에는 영향이 없나? -> 실험해 봤는데 블로킹 상태를 유지하며, 패킷도 정상적으로 수신한다. 내부적으로 문제가 생기는지는 모르겠다. 2020. 11. 3. 이전 1 2 3 4 5 다음