Below you will find pages that utilize the taxonomy term “goguelike2”
Posts
2020년 현재 goguelike의 상태 정리
goguelike - mmo-roguelike golang, websocket, webassembly, htmlcanvas (가능한한) 혼자서 만드는 MMO 서버 관리 서버 ( ground server )
다중 서버 지원
서버는 linux에서 golang으로 개발/실행
클라이언트는 golang으로 webassembly 를 생성
100% 서버 기반 클라이언트는 viewer , 사용자 입력을 서버로 전달 하는 역할
websocket을 사용 연결 유지형 클라이언트
클라이언트를 통한 핵킹/치트 가능성을 원천 봉쇄
클라이언트는 캐릭터의 현재 위치기준으로 시야내의 지형정보만을 받는다. ( 맵핵의 원천 봉쇄)
클라이언트 설치 불필요
webassembly/html5 canvas를 지원하는 web browser 라면 플랫폼 불문하고 플레이 가능
Posts
goguelike 2를 개발하면서 만들어진 라이브러리들의 일부를 공개/업데이트 합니다.
제 깃허브 https://github.com/kasworld?tab=repositories 에 올리고 있습니다.
기존에 공개한 라이브러리의 업데이트도 있고 새로 공개한 것들도 있습니다.
의존성이 적은 것들 위주로 코드를 좀 정리해서 올리고 있습니다.
설명이 거의 없는 것들이 많은데 설명이 필요 없을 정도로 간단한 것들도 많고 아니면 테스트 코드로 사용 법을 알수 있는 코드들도 있습니다.
그 이상의 설명이 필요하다 싶은 것들은 기분 내키는 대로 이 블로그에 간단히 포스팅 하도록 하겠습니다.
Posts
goguelike2에 sound effect를 추가 했습니다.
그냥 링크를 들어가서 버튼만 누르면 게임 화면을 볼수 있다고 생각해서 그림한장 없이 소개글을 썼더라구요. 그래서 간단한 스샷 입니다. 사용한 사운드 파일들은 ( 19개나 됩니다. ) 적당한 것을 ( 라이선스 문제도 있고 해서 ) 찾기 힘들어서 일단 리눅스 민트에 있는 효과음들을 사용했습니다. 그래도 어울리는 곳에 사용하긴 했는데 역시 어설픕니다. 그리고 소리 파일들 때문에 접속시 다운받는 용량이 500kbyte정도 늘어났습니다.
플레이 링크는 여전히 http://goguelike.iptime.org/?authkey=659b63f3-4c3d-9327-5c29-069de2d8b4f0 입니다.
Posts
udp와 network jitter
지난글 http://kasw.blogspot.com/2018/01/tcp-udp.html
이후로 goguelike2에 udp 지원을 넣기 위해 작업을 계속하고 있었는데 드디어 오늘 udp로 goguelike2 server 와client을 연결 tcp와 똑같이 작동시키는데 성공했습니다.
udp 작업만 한것은 아니고 필요한 다른 작업들도 동시에 하고 있었기 대문에 생각보다 좀 오래 걸린듯 합니다.
좀 집중해서 작업했으면 2주 정도는 당길수 있었을것 같지만 이런 저런 일들을 처리 하기도 하느라 시간을 좀 썼습니다.
그리고 부산물로 tcp 와 udp 를 동시에 지원 가능한 net 라이브러리가 생겼습니다. ^^
udp를 지원 하도록 바꾸면 tcp와의 차이를 비교 하는 것이 힘들 것 같아서 고민하다가 두가지를 거의 같은 구조로 지원 할수 있게 기반 작업들이 이루어지고 나니 그러면 동시에 지원하게 하면 좋겠네?
Posts
tcp 와 udp
goguelike2는 서버 클라이언트간 패킷전송을 초당 2 번, 즉 2 frame / sec 로 하고 있습니다.
사용자 행동(입력)은 각 frame 마다 서버로 전송되고
서버에서는 각 frame 별로 사용자 액션을 실행 결과를 돌려주는 동시에 그 결과로 변화된 field 상황을 viewport로 만들어 각 클라이언트에 전송합니다.
처음에는 초당 3번을 하도록 했었는데
local 이 아닌 wifi로 연결된 서버와 클라이언트에서 테스트라 했더니
서버 - 클라이언트간 전송 latency가 들쑥날쑥해서 클라이언트가 처리하기가 애매 했습니다.
frame jitter(?) 가 100% 가 넘는 경우가 생기더군요.
Posts
go sdl gui 의 새버전을 작업하고 있습니다.
오류가 발생했습니다. www.youtube.com에서 동영상을 시청하거나 브라우저에서 자바스크립트가 사용 중지된 경우 사용 설정하세요.
https://github.com/veandco/go-sdl2 를 기반으로 만들었던
https://github.com/kasworld/go-sdlgui 가 별로 맘에 안들어서 아예 새로 작업을 조금씩 해보고 있습니다.
go-sdlgui 와는 기반이 되는 design decision 이 달라서 아예 다른 형태의 구현이 될것 같습니다.
Posts
연휴를 뜻있게 보내기
어쩌다보니 9일의 연휴를 얻게되어 ( 감사합니다. 대표님 - 우리회사 좋은 회사 ^^)
어떻게 보내면 좋을까 잠시 고민하다 2년간 손대지 못하고 밀려 있던 goguelike2를 재 정비 하기로 했습니다. 이 글을 쓰는 시점이 (주말만이남은) 금요일 저녁 시간이라 그동안의 진행 결과를 정리하는 글입니다.
지금 회사에 합류할때 조건으로 건 것이 개인 프로젝트인 goguelike는 시간 나는 대로 계속하겠다. 는 것과 goguelike의 권리는 계속 내가 가지겠다. 였는데 대표님께서 혼쾌히 동의해 주셔서 안심하고 합류했었는데. 정작 회사 일을 시작하니 시간이 전혀 없어서 손을 거의 대지 못하고 있었습니다.
Posts
goguelike2의 AI에 상전이 엔진을 적용했습니다.
상전이 엔진은 농담이고 실은 finite-state machine을 적용했습니다. 그래도 “유한 상태 기계"같은 심심한 이름 보다는 상전이 엔진( Phase Transition Engine )쪽이 있어보이기도 하고 의미상으로도 크게 다르지 않으니 좋아보이는 군요.
상전이엔진에 대한 설명.. 아시는 분이 적더라는;;; http://namu.mirror.wiki/wiki/%EC%83%81%EC%A0%84%EC%9D%B4%20%EC%97%94%EC%A7%84
오류가 발생했습니다. www.youtube.com에서 동영상을 시청하거나 브라우저에서 자바스크립트가 사용 중지된 경우 사용 설정하세요.
3.3배속 AI 플레이 동영상 goguelike2의 기존 AI를 완전히 재작성해서 상전이엔진 stack-based FSM을 사용하도록 완전히 재작성하였습니다. AI를 새로 재작성한것이 이번으로 거의 5번째 정도 되는 것 같은데 이제야 겨우 좀 쓸만한 형태 ( 깔끔하고 수정, 확장하기 좋은 구조 )로 정리된것 같아 만족해 하고 있습니다.
Posts
goguelike2에 소비성아이템, 버프 추가
세계 최초?의 MMORLG(MMO roguelike game) 인^^;; goguelike2의 최근 작업진행사항입니다.
간단히 말하면 potion을 추가 하려고 했는데 일이 커져서 약 한달 넘게 bag (== 인벤토리 , 기존에는 장착 슬롯만 있었습니다. ) 돈(과 지갑), 무게 ( 아직 제한은 없습니다만.. ) 그리고 포션의 존재이유인 status effect 과 affected statues effect 등을 작업했습니다. status effect는 간단히 말해서 buff 와 de-buff 입니다. 그리고 이 모든것들을 지원하기위한 시스템의 수정과 업데이트;; 그래서 그 결과물이 위의 스크린 샷 입니다.
Posts
goguelike2 의 몇몇 스크린 샷들. 작업 진행 사항.
(거의) 재작성한 goguelike는 일단 goguelike2로 부르고 있습니다.
goguelike : version 0.x ~ goguelike2 : version 1.x ~
인셈이지요. 현재는 inventory 와 status effect(버프) 작업을 진행하고 있는데 ( 기존엔 장비와 장비 슬롯 은 있었지만 인벤토리는 없었습니다. )
진도가 잘 안나가는 관계로 기분전환삼아 작성하는 포스트 입니다. ;; 일단 실시간 서버모니터링 툴인 towerviewer 의 스샷들입니다. 최근 새로한 texture가 적용된 플레이맵 - observer mode라 시야 제한이 없는 view입니다. 층 전체가 보이는 map view
또다른 playmap
Posts
MMO를 만드는 것에 로망이 있다면 .
세상을 만들고 그 세상의 규칙을 정하는 경험을 해볼수 있다는 점일 것입니다.
goguelike도 일단 MMO의 범주에 들어가기때문에 ( MMORLG - mmo RogueLike Game ^^ ) 그런 경험을 즐길수 있습니다.
그를 위해서 terrain을 만든는 map script도 만들고 그 안에서 살아갈 AI들도 만들고 있습니다만 .. 역시 글자(log)로만 봐서는 확 하고 느낌이 오지 않는 관계로
기존의 webinfo 페이지 이외에 실시간으로 서버내 상황을 볼수 있는 viewer를 만들었습니다.
최근에 만들었던 terrainviewer를 확장해서 terrain만이 아니고 그 속의 AO/PO 들까지 볼수 있게 확장 한것입니다.
Posts
goguelike의 지형 생성 부분을 완전 재작업 하고 있습니다.
기존의 지형 시스템의 부족함이 느껴저서 새로 작업을 진행하고 있습니다.
기존과 같이 terrainscript+ random 을 사용해서 생성하는 것은 같으나 더 많은 구성 요소들과 더 정교한 로직을 사용하도록 바꿨습니다.
그랬더니 script만으로는 어떤 형태의 지형이 만들어 질지(+debug)상상하기 힘들어져서 간단한 terrain generation viewer를 만들었습니다..
오류가 발생했습니다. www.youtube.com에서 동영상을 시청하거나 브라우저에서 자바스크립트가 사용 중지된 경우 사용 설정하세요.
작업중인 동영상
그렇데 이런 구조라면 AI를 만드는 것이 더욱더 힘들어 질것 같습니다. (특히 client AI는 많이 힘들어 질듯 .