Posts
goguelike 의 webgl client 작업
webgl 의 CanvasTexture 를 사용한 PlaneBufferGeometry 를 terrain표시용으로 사용하는 gl client 입니다. canvas 만 사용할때는 wrap around 되는 field의 표시를 위해 귀찮은 작업(계산) 을 해야 했는데 CanvasTexture 의 RepeatWrapping 과 repeat 기능을 사용하니 간단히 해결되는 군요. 역시 신기술이 좋은 겁니다. ㅠㅠ
Posts
현실은 몇 turn/sec로 작동하고 있을까?
생각의 흐름대로 쓰는 글입니다. ^^
goguelike같은 실시간 턴제 게임을 만들다보면 turn/sec를 얼마로 하는 것이 적당할까? 하는 고민을 늘 하게됩니다.
그런데 우연히 위키에서 온도를 찾아 읽어보다가
절대 영도외에도 (이론상) 절대 최고온도가 존재 한다는 것을 알게 되었습니다. 플랑크 상수 에 의해서 정의되는 온도라기에 링크를 따라다니다 보니 플랑크 단위계 -> 플랑크 길이 -> 플랑크 시간 을 순서대로 읽다가
최소 길이, 최소 시간 이란 것이 정의 될 수 있다 는 것을 알게 되었습니다.
그리고 플랑크 시간 페이지의 마지막 문장을 읽고 글자 그대로 빵 터졌습니다.
Posts
하나의 게임을 두종류의 클라이이언트로 vs 두종류의 게임을 하나의 클라이언트로
gowasm2dgame vs gowasm3dgame의 이야깁니다.
gowasm2dgame 에는 두가지 버전(2d, 3d) 의 클라이이언트를 구현 하고
gowasm3dgame 에는 두 종류의 게임(2d stage, 3d stage)을 구현 해보았습니다.
두 프로젝트 모두 게임 로직은 서버의 stage에서 구현하고 있고 클라이언트는 viewer로만 작동하기 때문에 가능한 구조입니다.
현재는 사용자의 게임조작을 서버로 전달하는 부분이 빠저있지만 추가하는 것이 어렵진 않습니다.
gowasm2dgame 은 재미삼아 구현 한 것이고,
gowasm3dgame 은 장기적으로 stage기반의 online게임 프레임워크를 만들수 있지 않을까 하는 생각으로 작업중인 것입니다.
gowasm2dgame html canvas version client
Posts
소수 구하기 프로그램을 만들어 성능테스트
dos와 turbo-c 시절 부터의 취미인 소수 구하기 프로그램을 만들어 성능테스트 하기 입니다. 16bit 시절 부터 이런 저런 방법으로 소수구하기 프로그램을 짜고 시간측정을 해가며 옵티마이징하는 취미가 있었습니다. 새 컴퓨터 , 새 OS , 새 언어 , 새 cpu, 등이 생기면 항상 그 환경용 으로 작성해서 성능의 변화를 즐기고 있었는데 최근 몇년간은 intel의 삽질로 별다른 변화가 없어서 거의 잊고 있었습니다.
하지만 이번에 AMD 8코어 16 쓰레드 cpu와 새 램(ddr4) 이 생겼으니 테스트를 할 생각이 들어서 작업을 해봤습니다.
Posts
gofieldwar 개발 일기
색을 조정해서 시인성을 개선한 스크린 샷입니다.
3x3 의 외성과 1x1의 내성으로 진을 짜고 병력을 배치한 상태입니다.
본격적으로 서버에서 받은 정보로 클라이언트가 표시하게 되었습니다.
goguelike 와 같이 gofieldwar도 정해진 영역(field)이 무한 반복되는 형태 입니다. ( 한쪽으로 계속 가면 반대쪽끝으로 나오는 형태)
프로토콜을 정리하고 클라이언트에 UI을 붙일 준비를 하고 있습니다.
Posts
테스트용으로 서비스 중이던 goguelike.iptime.org 서버를 내립니다.
소스를 공개한 시점에서 서비스를 유지할 필요가 없다고 생각되어 서비스를 내렸습니다. 플레이 하고 싶으신 분은 https://github.com/kasworld/goguelike 에서 소스를 받아 빌드 해서 사용하시면 되겠습니다. goguelike의 개발이 완료되었거나 종료 되었다는 의미는 아닙니다. ^^
아마 다음에 여는 (테스트)서비스는 gofieldwar가 되지않을까 생각하고 있습니다.
Posts
gofieldwar 프로토타이핑 방어진지
gofieldwar 프로토타입 작업을 진행중에
병력을 사용한 방어 진지 형태를 만들어보았습니다.
X 자 표시가 근거리 공격 , + 자 표시가 원거리 공격의 threaten area 입니다.
3종의 병력은 근거리 공격(바로 옆 셀) , 원거리 공격( 한칸 건너) , 공성(성벽공격) 으로 나누어 집니다.
4종의 자원으로 타운을 번영(levelup)시켜 병력을 뽑고 , 성벽과 성문 을 만들어 공격에 대비 합니다.
갈색네모가 성벽과 성문(성벽중에 일부가 다른색 열린문/닫힌문 ) 입니다.
Posts
가칭 gofieldwar 작업을 시작했습니다.
예전에 go-sdl로 만들다 치워둔 프로젝트로 goguelike 가 어느정도 정리 되면 이어서 작업할 생각이었던 프로젝트 입니다.
일단은 MMO RTS 로 생각하고 있습니다만 어떻게 바뀔지는 모르겠습니다.
어쩌면 RTS 라기보다는 땅따먹기 에 가까울 것 같지만 그것도 RTS 의 일종이라고 생각합니다. ^^
goguelike가 완료 되거나 종료 된것 은 아니고 한가지만 하면 지겨우니 기분 전환 삼아 다른 프로젝트도 병행 하는 것입니다.
비슷한 이유로 만들어진것이 gowasm3dgame 이나 gowasm2dgame 입니다.
Posts
6년 가까이 작업해온 goguelike 의 소스 코드를 공개 합니다.
소스 코드와 문서는 https://github.com/kasworld/goguelike 에 있습니다.
라이센스는 Apache-2.0 으로 했으니 편하게 쓰시면 될 것 같습니다.
게임플레이 URL (play URL) http://goguelike.iptime.org/
( OS 상관없이 web socket, webassembly, unicode 를 지원하는 브라우져면 됩니다. )
실행가능 서버 다운 (download binary) : linux(debian,ubuntu,mint) 용 http://goguelike.iptime.org/download.zip
설치는 설치문서에 적어 두었습니다. https://github.com/kasworld/goguelike/blob/master/INSTALL.md
레포지토리를 공개로 전환하고 설치 테스트를 해보니 의존성 쪽이 이상해서 golang의 module, vendor 를 사용하도록 수정하였습니다. 비공개 버전 goguelike2의 마지막 상태는 5504 commit으로 종료 되었습니다. 기존 작업을 두고 새로 프로젝트를 만들어 옮긴 이유는 이전 코드들이 보여줄만 하지 못하다는 것도 있지만, 누적된 commit이 많아 크기때문에 다운 받는 시간이 길어 진다는 이유도 있습니다.
Posts
roguelike를 MMO로 만들면
http://goguelike.iptime.org/
에서 플레이 할 수 있는 두종류의 서버(tower) 플레이 동영상 roguelike tower
오류가 발생했습니다. www.youtube.com에서 동영상을 시청하거나 브라우저에서 자바스크립트가 사용 중지된 경우 사용 설정하세요.
goguelike tower
오류가 발생했습니다. www.youtube.com에서 동영상을 시청하거나 브라우저에서 자바스크립트가 사용 중지된 경우 사용 설정하세요.
roguelike 게임들은 턴 기반으로 행동이 이루어 집니다.
내가 행동하기 전까지는 게임이 멈춰서서 기다려 주는 거지요.
그런데 이걸 MMO로 만드려고 하면 모든 플레이어가 행동을 선택하기 전까지 모든 플레이어가 기다려야 한다는 문제가 발생합니다.
그래서 어쩔 수 없이 또 당연히 실시간 턴제가 되었습니다.