Posts
help, 툴팁, 인풋렉, 게임 노티의 개선
오류가 발생했습니다. www.youtube.com에서 동영상을 시청하거나 브라우저에서 자바스크립트가 사용 중지된 경우 사용 설정하세요.
goguelike는 서버기반으로 만들어진 게임이고, 클라이언트는 사용자의 입력을 서버로 전달하는 일과 서버가 보내준 시야를 표시하는 일만 합니다.
그로인해서 어쩔 수 없이 사용자 입력과 화면 표시사이에는 시간 차가 발생하게되는데, 그동안에는 한턴당 한번의 사용자 입력만 서버로 보내도록 하고 있었습니다. (서버와 네트웍의 부담을 줄이기 위해서 입니다. )
이를 사용자의 입력이 발생( 정확히는 바뀔때)할때 마다 서버로 보내도록 바꾸었습니다. 서버는 새 턴이 시작하는 시점까지 들어온 사용자 입력중 마지막 입력만을 사용해 다음 턴 사용자의 행동을 결정합니다.
Posts
emoji 를 사용할때 줄간격이 이상해 지는 문제.
유니코드 이모지를 아이템 표시용으로 사용하게 되면서 보기 편해져서 그럼 문자 정보 표시에도 적용해 봤습니다.
확실히 그림(글자) 가 표시되니 보기 편해지긴 합니다만 이상하게 줄간격이 들쑥 날쑥 해집니다.
자세히 살펴보면 이모지가 표시된 줄들이 줄간격이 넓어 지는군요.
그리고 또 자세히 살펴보면 한글이 표시된 줄들도 살짝 줄간격이 이상해 지는 것을 알수 있습니다.
일단은 이모지표시가 있는게 보기 좋아서( 줄간은 들쑥날쑥하지만 ) 그대로 두긴 했습니다.
Posts
새 타일 텍스처 적용, 유니코드 타일 , 추가된 함정들
오류가 발생했습니다. www.youtube.com에서 동영상을 시청하거나 브라우저에서 자바스크립트가 사용 중지된 경우 사용 설정하세요.
이상하게 4k video 를 캡처해서 youtube에 올려도 fhd로만 만들어 주기에 애초에 fhd 60프레임으로 캡처했습니다.
기존에 있던 어딘가에서 주워온 타일 텍스처를 버리고 GIMP로 새로 만든 (브러시를 사용해서) 타일 텍스처로 교체 했습니다.
최근 추가된 함정들의 효과도 포함되었으며
아이템 타일들을 기존의 ASCII 기반 타일에서 unicode emoji 기반 타일로 교체 했습니다.
🔪 Weapon ⛨ Shield 👑 Helmet 👕 Armor 🧤 Gauntlet 👢 Footwear 💍 Ring 🎀 Amulet 🍾 Potion 📜 Scroll 이런게 되니 좋군요.
Posts
새 기계의 성능테스트 의 기록
새 컴퓨터가 준비 되었으니 당연히 성능테스트를 진행 해봤습니다.
사양은 전에 쓴대로 AMD 라이젠 7 3700X + X570 보드+ 128GB ram 입니다.
goguelike tower(게임) 서버와 다중 접속 테스트용 multiclient 를 사용해서
1000 클라이언트(connection)을 테스트 해보니 전혀 부하가 걸리지 않아서
10000 클라이언트를 걸어 보았습니다. 바로 open file 부족 에러가 나더군요. 까먹고 있던 linux의 서버 설정들을 해주었습니다.
/etc/security/limits.conf 파일에 * soft nofile 999999 * hard nofile 999999 * soft core unlimited * hard core unlimited
Posts
데스크탑 업그레이드 AMD 라이젠 7 3700X + X570 보드+ 128GB ram
요즘엔 노트북도 데스크탑못지 않게 빠르니 앞으로는 데스크탑은 사지 않고 노트북만 쓰겠어! 라고 생각했던 적이 저에게도 있었습니다. ^^;
2년 반 정도 잘 사용해온 한성 노트북이 goguelike 플레이를 녹화 하는데 버벅이더군요.
인텔 i7-7700HQ (4코어 8쓰레드) cpu 에 24GB 램 1T nvme 디스크 로는 모자란가? 하고 호시탐탐 업그레이드를 위한 조사를 몇달간! 진행했습니다.
업그레이드를 하면 적어도 2배는 빨라져야한다. 라는 기준을 세우고 검색을 해봤으나 현재 노트북에서는 극도로 많은 비용( 300만원 이상 ) 을 지불 하기 전에는 2배성능의 기계를 살수 없다는 것을 알았습니다.
Posts
프로그래밍에서 가장? 어렵다는 이름 짓기
요즘 goguelike에 상태이상을 새로 추가하기 위한 작업을 하고 있습니다.
예를 들면 이런 것들이지요. Blind ,Poisoned ,Invisible ,Weaken ,Slow ,Float , Hallucinate ,Greasy ,Sleep ,Confused 눈멀고 독걸리고 약화되고 느려지고 공중에 떠오르고 , 환각을 보고, 미끄러 떨어 트리고 , 졸리고 , 혼란되고, 등입니다.
이들을 아우르는 용어 ( 타입 이름 ) 을 정하느라 고민을 하고 있었습니다.
보통 상태 라고 하면 state 나 status 등을 자주 사용하곤 합니다만, 뭔가 딱 맞는 느낌이 안드는 거지요.
Posts
goguelike 5000 commit 기념
2014년 ( 블로그 기준 ) 시작한 프로젝트가 드디어 5000 commit을 달성했기에 기록합니다. ^^
첫 포스트 https://kasw.blogspot.com/2014/08/blog-post.html
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
그저 3d 공간에 공들이 돌아다닐 뿐인 프로젝트
https://github.com/kasworld/gowasm3dgame
꽤 예전에 서버 기반 게임 프레임웍 으로 만들었던 go4game을 remake 한 프로젝트 입니다.
서버 기반 게임 제작을 위한 프레임웍/라이브러리 들인
genprotocol 서버 클라이언트가 사용할 프로토콜 생성, 관리
argdefault : config와 command line arguments
prettystring : struct 의 string 화 / admin web , debug용
genenum : enum 의 생성, 관리
log : 전용 log package의 생성, 사용
signalhandle : signal을 관리해서 프로그램의 linux 서비스화, start,stop,forcestart,
들을 사용해서 만들어 봤습니다.
Posts
go 언어로 만든 배경이 있는 시계/달력
https://github.com/kasworld/wasmclockcal
go언어의 webassembly 생성 기능을 사용해서 만든 시계/달력 입니다.
build.sh을 실행하면
파일을 http로 서비스 해줄 dir2http 와 실제 index.html을 통해 로딩되어 시계/달력을 표시해줄 wasmclock.wasm 파일이 생성됩니다.
wasm_exec.js 은 wasm을 로딩해서 실행하는 데 사용 됩니다. go를 설치하면 /usr/local/go/misc/wasm 폴더에 설치되어 있습니다. (linux 의 경우 )
dir2http를 실행하면 접속할 클라이언트 url을 보여 줍니다.
dir2http dir=. port=:8080 http://localhost:8080/
open bgclock http://localhost:8080/?bgimg=image open youtube clock http://localhost:8080/?mvid=youtubeid
클라이언트 접속 URL 에
bgimg=이미지이름(url) 을 주면 배경그림이 설정되고