Below you will find pages that utilize the taxonomy term “go4game”
Posts
go4game의 spatial partition을 octree로 바꿨습니다.
설명: ai3의 회피 알고리즘 테스트 동영상 - 글내용과 무관함 ^^
기존 wxgame2에서 부터 충돌 검사와 AI 를 의해 사용해 오던 준 동적 공간분할 대신 나름 정통 공간 분할인 octree로 바꿨습니다.
기존에는 공간을 매 프레임 마다 총 object의 수에 비례하는 (축당 math.pow(ocount, 1/3)) 배열로 분할 해서 충돌 검사 및 AI에게 주변 환경정보를 제공하는데 사용해 왔습니다.
하지만 아무래도 약식이라 부족한 점이 많아서 공간 분할을 하는 몇가지 알고리즘 중에 일단 octree를 선택, 구현 해봤습니다.
Posts
go4game 추가 사항들 정리
github commit log로 부터 역으로 만들어낸 내용입니다.
설명: 실제 여러 월드가 동작하는 화면
설명: 월드내 팀의 자세한 상태 - 배경색이 team color
설명: 추가된 장식물, home object
최근 부터 역순으로 team 의 world 간 이동 기능 homepos to home object json config load / save log format 정리 장식물(decoration object)들 추가 collision 관련 성능, 구조 개선 object, team, world struct 간 상호 pointer 줄이기. 같은 기능이 추가 되었습니다. 코드상으로는 많은 변화가 있었지만 실제 외견(어차피 서버라 외견이랄게 없지만)상으로 변화한 것은 별로 없습니다.
Posts
게임 규칙의 헛점을 최대한 악용(활용)하는 AI
설명: 여러개의 월드를 지원하는 요약 페이지
설명: 하나의 월드의 자세한 상태를 보여주는 페이지
게임의 규칙을 악용하는 것은 사람만 할 수 있는 것은 아닙니다.
go4game처럼 단순한 규칙의 게임에서도 룰의 헛점을 찾아내서 그것을 활용하는 것이 가능합니다.
AI를 만들다 보니 몇가지 고민스러운 것이 생겼는데 그 중 하나는 AI의 강함의 정도를 어떻게 정량화 할 것인가 하는 점입니다. 얼핏 생각하면 하나의 월드에 두개의 AI를 넣고 일정 시간후 승점(격추수) 가 높은 쪽이 강한 것이 아닌 가 생각 되지만 테스트를 하다보면 1:1 에 강한 AI 도 있고 , 다대 다 에 강한 AI 도 있으며 서로 상성이 있는 AI 가 있는 경우도 있습니다.
Posts
go4game의 게임 규칙
AI 만이 아니고 게임을 구성하기 위해선 게임의 룰도 정리되어야 하기에 적어봅니다. ( 아주 사무적인 문서라 말이 짧습니다. ^^;; _
설명:업데이트된 게임 상태창.
설명:새로 추가된 AICloud의 동작모습
한개의 gameservice 에는 실제 team간 interactaction 이 발생하는 여러개의 World 가 존재
각각의 world에는 team들이 소속 team은 tcp client , websocket client , ai client 가 존재 world는 60 frame / sec 로 각 팀에게 frame action을 요청 각 팀의 frame action은 goroutine을 사용 concurrent 하게 진행.
Posts
go4game 에 AI를 붙이고 있습니다.
설명 : go4game webgl client 플레이 동영상.
사진 설명 : 서버의 상태를 보여주는 페이지 ( 팀 이름 , AI 종류 , 팀 object 수 , 팀 점수, 팀 AP , 팀 패킷 통계 )
go4game도 이제 wxgame2 정도로 작업이 진행되어 여러 AI끼리 대전을 시키고 그 진행사항과 순위를 볼 수 있는 페이지를 만들었습니다.
위 와 같은 형태로 만들어서 여러 형태의 AI를 만들고 AI끼리 대전을 시키면서 개선을 해나 가고 있는데 이전 wxgame2 작업할 때도 썼지만 AI를 개량해서 그 AI가 이전에 만든 것보다 좋도록 만드는 것은 참 생각대로 안됩니다.
Posts
go4game 에 웹 클라이언트를 추가 했습니다.
사진 설명 : go4game web client
소스코드는 언제나 처럼 https://github.com/kasworld/go4game 에 있습니다.
go언어는 서버에서 사용하는 것을 중점으로 하고 있기 때문에 client UI 를 작성할 만한 라이브러리가 적당한 것이 없습니다.
기본 라이브러리만이 아니고 3rd party 에서도 아직까지는 딱히 이거다 라고 할만한 것이 없더군요.
그에 반해서 서버를 만들기 위한 라이브러리는 tcp/http 불문하고 넘칠 정도로 많고 또 잘되어 있는데 아마도 go언어로 만든 프로그램의 UI는 당연히 web으로 작성하라는 의미 같습니다.
그런 관계로 go4game도 client UI는 웹으로 작성해야 겠다는 생각이 들어서 ( 사실은 클라이언트 UI 라이브러리를 찾다 포기하고 ^^; ) 웹 작업을 했습니다.
Posts
go4game - go 언어로 만드는 게임 서버
몇 년 전부터 생각하고 있던 go언어를 사용한 게임 서버의 개발을 시작했습니다.
일단 첫 번째 작동 버전은 언제나처럼 github에 있습니다. 지금까지 만들어진 것은 서버를 구성하기 위한 가장 기본 적인 구조들 GameService, World, Team, GameObject 과 client 와 tcp 로 패킷을 주고 받을 수 있는 구조들 정도 입니다. 지금 사용하는 패킷은 int32 len + json 형태의 패킷입니다.
참고로 그동안 제가 적은 go 관련 스터디 포스트 들입니다. The Go Programming Language : 2009년 글입니다.