Below you will find pages that utilize the taxonomy term “goguelike”
Posts
goguelike 의 캐릭터(activeobject) 형태를 바꿔 봤습니다.
오류가 발생했습니다. www.youtube.com에서 동영상을 시청하거나 브라우저에서 자바스크립트가 사용 중지된 경우 사용 설정하세요.
졸라맨 형태같기도 하고 “옷” 같기도 한 모양입니다만 이런모양이 된것은 제가 threejs 를 사용해서 만들수 있는 가장 사람 과 닮은 형태라서 그렇습니다. 그전에 알파벳 모양일때는 위에서 보기 좋게 누워 있었는데 이제는 그럴필용가 작아져서 누워 있는 것을 일으켜 세웠습니다.
모든 faction의 캐릭터의 모양이 다 같아져서 색만으로 구별해야 하게 되었지만 조금더 그럴 듯하게 보이게 되었습니다. 그 외에 내부적인 변경사항은 terrain script의 업데이트, towermaker의 업데이트, 모든 랜덤을 seed 기반으로 바꾸고 tower config에서 seed를 지정할 수 있게 만들었습니다.
Posts
goguelike 에서 가칭 LightHouse 와 GateKeeper fieldobj 의 동작.
공격방식의 개선을 통해서 fieldobj 가 AO를 공격하는 것이 가능해졌습니다. 오류가 발생했습니다. www.youtube.com에서 동영상을 시청하거나 브라우저에서 자바스크립트가 사용 중지된 경우 사용 설정하세요.
오류가 발생했습니다. www.youtube.com에서 동영상을 시청하거나 브라우저에서 자바스크립트가 사용 중지된 경우 사용 설정하세요.
추가로 lighthouse와 gatekeeper를 사용한 플로어의 플레이 테스트
오류가 발생했습니다. www.youtube.com에서 동영상을 시청하거나 브라우저에서 자바스크립트가 사용 중지된 경우 사용 설정하세요.
Posts
goguelike 공격방식의 개선
오류가 발생했습니다. www.youtube.com에서 동영상을 시청하거나 브라우저에서 자바스크립트가 사용 중지된 경우 사용 설정하세요.
기존에는 active object (캐릭터) 가 자신의 주변 8방향 타일을 향해서만 공격하는 형태였습니다.
이를 확장 개선하여 공격당하는 타일 (danger object)를 정의 하고 공격 행동이 이 DO 들을 만들어 DO manager에 추가 하는 형태로 개선 변경하였습니다.
이를 통해서 바로 옆 타일 하나를 공격하는 기본 공격 뿐아니라 근접 3타일을 공격하는 범위 공격 (wide attack ) , 한쪽 방향으로 3타일 까지 공격하는 장거리 공격( long attack) 의 추가가 가능해 졌습니다.
Posts
goguelike map script 업데이트
map script를 업데이트 했습니다. tile을 사용한 draw 기능들이 추가 되었는데 선, 원, 사각형, 미로 등을 tile로 그릴수 있게 되어 본격적으로 tile을 사용해서 그림을 그릴수 있게 되었습니다.
기존에는 tile로는 못하고 resource tile로만 가능했었습니다.
위 그림에서 첫째, 둘째는 resource tile로 그린 것이고 , 셋째 는 tile로 그린 것입니다.
보기에 비슷해 보이지만 terrain ageing을 할경우 두 지형은 서로 다른 반응을 보입니다.
tile로 그린 경우는 변화된 지형에 tile로 그린 모습이 덧 씌워 지며 resource로 그린 경우는 각 resource의 풍화 로직에 따라 지형이 변화해 갑니다.
Posts
goguelike의 시야범위 linesofsight 를 rework 했습니다.
기존의 코드가 상당히 지저분한 관계로 언젠가는 고쳐야지하고 생각하다가 좋은 알고리즘?이 떠올라 주말에 작업했습니다. 간단히 끝날것으로 생각했었는데 1차 함수의 수식을 대충 생각하고 작업한 부분에 버그가 있어서 주말 내내 머리 싸매고 고민하게 만들었습니다.
고생은 했고 또 실행 결과는 똑같지만 코드가 아주 깨끗해저서 꽤 만족스럽습니다.
내용은 캐릭터의 보는 능력을 시선이 통과하는 타일들이 방해 하는 것 을 계산 해서 어디 까지 볼 수 있는가 하는 것으로 타일과 시선이 겹치는 길이 * 타일의 시선 방해도 를 시선이 지나가는 전체 타일에 적용합니다.
Posts
goguelike 업데이트, 2d client 제거, 타일 투명도 적용등.
아래 동영상은 분명히 4K로 캡처했는데 업로드하니 2K 가 되는 군요.
오류가 발생했습니다. www.youtube.com에서 동영상을 시청하거나 브라우저에서 자바스크립트가 사용 중지된 경우 사용 설정하세요.
3D client에만 적용 가능한 기능들이 있어서 ( condition float 는 실제로 공중으로 띄웁니다. ) 더이상 의미없는 2D client는 제거 해야 할것 같습니다. 그 외에는 tile에 투명도를 적용했습니다. webgl, three.js 에 unicode char 를 표시하는 것이 잘 안되어 ascii char로 바꾸었습니다.
Posts
goguelike glclient에 2d client 기능의 대부분을 구현 했습니다.
마지막으로 구현한 것이 중앙 상단에 나오는 공지? 메시지입니다. 그 외에 지형 스크립트를 자동으로 만들어 주는 towermaker를 강화해서 100층이나 1000층 짜리 타워를 만들수 있게 되었습니다. 1000층 짜리 타워를 실행하면 CPU도 RAM도 무지막지하게 사용하게 됩니다. 대충 50Gbyte정도의 램과 16개의 cpu를 거의 풀로 사용하더군요. 그리고 작업중인 기능? 으로 대 코로나 시대를 맞이하여? 컨디션과 fieldobj(trap) 에 전염병(Contagion) 을 추가 해보고 있습니다. 이런저런 수치 ( 전염성, 사망율, 자연 회복율) 를 조정해가며 이리 저리 실험해볼 생각입니다.
Posts
goguelike 개발 진행 사항
오류가 발생했습니다. www.youtube.com에서 동영상을 시청하거나 브라우저에서 자바스크립트가 사용 중지된 경우 사용 설정하세요.
tile들이 모두 3D 로 만들어 지고 타일 들이 높이 맞게 Fieldobj 와 activeobj 들이 배치 및 이동합니다.
그 외에는 towermaker 가 대폭적으로 업데이트 되었습니다. 기존에 손으로 만들었던 starttower 같은 것을 더 쉽게 만들 수 있습니다.
Posts
WebGL 버전 goguelike에 타일 애니메이션, 데미지 표현, 행동력 부족 표현 추가
오류가 발생했습니다. www.youtube.com에서 동영상을 시청하거나 브라우저에서 자바스크립트가 사용 중지된 경우 사용 설정하세요.
개인적으로 가장 그럴듯한 층에서 동영상을 찍어보았습니다.
공격받아 피해를 입는 표현과 행동력 부족으로 행동을 못하는 턴의 표현이 추가 되었고
안개, 물, 마그마등이 시간에 따라 흐르는 표현이 추가 되었습니다.
Posts
goguelike에 카메라 기울임 기능 추가
오류가 발생했습니다. www.youtube.com에서 동영상을 시청하거나 브라우저에서 자바스크립트가 사용 중지된 경우 사용 설정하세요.
카메라 기울임과 줌 기능을 테스트한 동영상입니다.
Posts
goguelike 쿼터 뷰
3D tile 을 적용한 김에 카메라를 살짝 기울여 보았습니다. 확실히 입체감이 늘어나고 필드가 좀더 그럴듯 하게 되었습니다.
다만 가시 범위가 늘어나서 성능을 위해 보이는 부분만 object를 배치한 것이 티나는 군요.
Posts
goguelike WebGL 클라이언트 작업
캐릭터 (activeobj) item(CarryObj) 상점,계단,함정들(FieldObj) , 벽,문,창(Wall, Door, Window) 을 3D 화 했습니다.
미로 지형에서 가장 극적으로 보이기에 화면 캡처를 해봤습니다.
Posts
goguelike 의 webgl client 작업
webgl 의 CanvasTexture 를 사용한 PlaneBufferGeometry 를 terrain표시용으로 사용하는 gl client 입니다. canvas 만 사용할때는 wrap around 되는 field의 표시를 위해 귀찮은 작업(계산) 을 해야 했는데 CanvasTexture 의 RepeatWrapping 과 repeat 기능을 사용하니 간단히 해결되는 군요. 역시 신기술이 좋은 겁니다. ㅠㅠ
Posts
테스트용으로 서비스 중이던 goguelike.iptime.org 서버를 내립니다.
소스를 공개한 시점에서 서비스를 유지할 필요가 없다고 생각되어 서비스를 내렸습니다. 플레이 하고 싶으신 분은 https://github.com/kasworld/goguelike 에서 소스를 받아 빌드 해서 사용하시면 되겠습니다. goguelike의 개발이 완료되었거나 종료 되었다는 의미는 아닙니다. ^^
아마 다음에 여는 (테스트)서비스는 gofieldwar가 되지않을까 생각하고 있습니다.
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로 만드려고 하면 모든 플레이어가 행동을 선택하기 전까지 모든 플레이어가 기다려야 한다는 문제가 발생합니다.
그래서 어쩔 수 없이 또 당연히 실시간 턴제가 되었습니다.
Posts
help, 툴팁, 인풋렉, 게임 노티의 개선
오류가 발생했습니다. www.youtube.com에서 동영상을 시청하거나 브라우저에서 자바스크립트가 사용 중지된 경우 사용 설정하세요.
goguelike는 서버기반으로 만들어진 게임이고, 클라이언트는 사용자의 입력을 서버로 전달하는 일과 서버가 보내준 시야를 표시하는 일만 합니다.
그로인해서 어쩔 수 없이 사용자 입력과 화면 표시사이에는 시간 차가 발생하게되는데, 그동안에는 한턴당 한번의 사용자 입력만 서버로 보내도록 하고 있었습니다. (서버와 네트웍의 부담을 줄이기 위해서 입니다. )
이를 사용자의 입력이 발생( 정확히는 바뀔때)할때 마다 서버로 보내도록 바꾸었습니다. 서버는 새 턴이 시작하는 시점까지 들어온 사용자 입력중 마지막 입력만을 사용해 다음 턴 사용자의 행동을 결정합니다.
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
golang (네트웍) 프로토콜 생성기
https://github.com/kasworld/genprotocol
genprotocol - protocol 기반 코드 생성 ( goguelike 프로젝트를 하면서 만들어진 ) 네트웍 등에서 사용하기 위한 protocol 을 작성하는데 필요한 반복적 이고 기계적인 코드들을 자동으로 생성 해주는 프로그램 입니다. https://github.com/kasworld/wasmwebsocket 을 보면 예제를 볼 수 있습니다. 작성 이유는 하나의 프로젝트에서 여러종의 protocol 을 사용할 일이 생겨서 반복된 코드를 작성하다 보니 만들게 되었습니다. goguelike 를 예로 들면 game client - tower server tower server - ground server 의 2종의 protocol이 필요하고 사실상 비슷한데 조금 다른 코드들이 서로 구별 되어 쓰입니다.
Posts
goguelike 편향Bias의 color표시 , 지난 1년간 작업량
goguelike의 성향은 ( 엄밀히 말하면 편향 bais 입니다. 성향 alignment 이 아니고 )
리니지의 1축 (lawful, chaotic) 이나 D&D의 2축 ( good - evil 추가 ) 이 아니고 3축입니다. ( 즉 편향은 3차원 벡터 입니다. ^^ )
성향이 아니고 편향 이기 때문에 축에 특별한 의미를 부여하지는 않았습니다만 대신 각축을 color의 Red , Green, Blue 로 표시 하도록 하였습니다. 색에 - ( 음의 값 ) 은 없으니 중립을 회색으로 정하고 나니 편향을 한개의 색으로 표현할수 있게 되었습니다.
Posts
goguelike 원형 시야의 적용
흰색 사각형이 기존의 사각형 시야 이고 그 주위로 약간 밝게 보이는 것이 새로 적용된 원형 시야 입니다.
기존에 구현 편의상 사각형으로 시야를 만들고 있었는데 ( 2차원 배열 ) 아무래도 맘에 들지 않아 ( 리얼해 보이지도 않고 ) 수정했습니다.
라고 쓰면 간단해보이지만 내부적으로는 꽤나 대규모의 수정 작업이 있었습니다. 약 3일정도 20시간 정도의 작업이 들어갔군요. 덕분에 이제 부터는 비정형 시야 ( 타원 , 별모양등 ) 를 만드는 것도 가능한 구조가 되었습니다. ( 쓸일이야 없겠지만 ^^ )
Posts
goguelike 기억상실, 각종 함정의 추가
꽤 오랫동안 고민하고 준비했던 기억상실 함정을 추가 했습니다. 기억상실 함정은 두종류로 현재 층의 탐험 기억을 잊는 함정과 그동안 탐험한 층 중 하나의 기억을 랜덤하게 잊는 함정입니다. 기억을 잊게 되면 잊은 만큼의 탐험 경험치도 같이 상실 하게 됩니다.
goguelike는 경험치의 성장이 2가지 인데 하나는 전투를 통해서 얻는 전투 경험치로 이것은 사망시에 일정 비율로 상실됩니다. 또 하나는 개척/탐험 경험치로 플로어에 아직 가보지 않은 타일을 탐험하게 되면 얻게 됩니다. 추가적으로 새로운 층(floor) 을 발견 하거나 하나의 층을 완전히 탐험하면 보너스 경험치도 얻습니다.
Posts
goguelike 미니맵의 삭제, 2단 줌의 추가
오류가 발생했습니다. www.youtube.com에서 동영상을 시청하거나 브라우저에서 자바스크립트가 사용 중지된 경우 사용 설정하세요.
동영상을 보시면 됩니다.
전부터 구현이 맘에 안들던 minimap을 삭제하고 플레이 뷰와 플로어 뷰 에서 다단 줌을 지원하게 바꿨습니다.
큰 필드에서는 zoom out을 하는 것으로 전체를 볼수 없다는 단점은 있지만 나름 bird eye view 라서 느낌이 확 달라집니다.
꽉 찬 (일반) 플로어 에서 줌 하는 것과 빈공간이 많은 roguelike 플로어에서 줌 해서 보는 것 또한 전혀 다른 느낌을 주는 군요.
Posts
goguelike에 함정추가, webclient에 뷰포트 줌 추가 등.
오류가 발생했습니다. www.youtube.com에서 동영상을 시청하거나 브라우저에서 자바스크립트가 사용 중지된 경우 사용 설정하세요.
위 동영상은 최근에 추가한 grid 와 뷰포트 줌 기능을 시연한것입니다.
전부터 추가해야 겠다고 생각하고 있던 함정을 추가 했습니다. 함정은 밟기 전까지는 보이지 않으며 일단 밟으면 일정한 효과를 발생합니다. 함정을 추가할 구조를 준비하고 가장 만들고 싶었던 teleport 함정을 만들었습니다. 기존에 있던 자동 진입 포탈 과의 차이점은 포탈은 진입점과 도착 지점이 고정인데 전이함정 은 진입점은 고정이나 도착 지점이 지정된 플로어의 임의의 위치가 됩니다.
Posts
goguelike의 유령 floor
오류가 발생했습니다. www.youtube.com에서 동영상을 시청하거나 브라우저에서 자바스크립트가 사용 중지된 경우 사용 설정하세요.
goguelike는 방(room)과 통로(corridor) 의 재질을 여러 가지로 할수 있습니다. 그래서 새로 추가된 유령 층의 방과 통로를 안개(fog)와 연기(smoke) 로 구성해보았습니다.
그리고 통로를 여러 재질로 만들수 있기에 기존 최근에 추가된 goguelike floor 의 통로에 2가지 재질 통로를 적용해 보았습니다.
오류가 발생했습니다. www.youtube.com에서 동영상을 시청하거나 브라우저에서 자바스크립트가 사용 중지된 경우 사용 설정하세요.
Posts
goguelike - grid의 부활, 화면 버튼의 간소화, 장비 - 팩션의 연결
오류가 발생했습니다. www.youtube.com에서 동영상을 시청하거나 브라우저에서 자바스크립트가 사용 중지된 경우 사용 설정하세요.
Dark A-Black [-58 -58 -58] Blood B-Maroon [0 -71 -71] Flame C-Red [57 -58 -58] Wild D-Green [-71 0 -71] Void E-Olive [0 0 -100] Galactic F-DarkOrange [70 7 -71] Brilliant G-Lime [-58 57 -58] Cosmic H-Chartreuse [-1 70 -71] Sun I-Yellow [58 58 -58] Aqua J-Navy [-71 -71 0] Abyssal K-Purple [0 -100 0] Hell L-DeepPink [76 -64 11] Ethereal M-Teal [-100 0 0] Ghost N-Salmon [99 0 -11] Celestial O-SpringGreen [-71 70 -1] Astral P-LightGreen [14 98 14] Moon Q-Khaki [74 67 8] Alchemic R-Blue [-58 -58 57] Infernal S-DarkViolet [13 -83 54] Chaotic T-Magenta [58 -58 58] Shadow U-DodgerBlue [-61 10 79] Dream V-MediumSlateBlue [-4 -21 98] Primal W-Violet [71 1 71] Frost X-Cyan [-58 58 58] Holy Y-Aquamarine [-1 83 55] Star Z-White [58 58 58] 위 목록은 팩션과 장비의 재질 수식어를 연결한 관계 입니다.
Posts
goguelike 각 타워별, 타워 내의 층 별로 다르게 흐르는 시간
시간과 공간의 비밀? 이 숨어 있다는 인트로 설명대로 각 타워별로 그리고 또 타워 내의 층별로 시간의 흐름을 다르게 했습니다.
타워 목록에서 타워 이름에 표시된 수자가 초당 흐르는 사건 수 ( 행동 수 ) 이며 타워 내의 층 별로도 이 흐름은 다르게 흘러갑니다.
그 외의 주요 변경점으로는 뷰 포트를 현재 플레이시점과 미니맵에서 지정한 위치를 보여주는 관찰자 시점간 전환 기능이 들어갔습니다.
장비 이름에 재질 형용사가 장비의 faction을 따르도록 수정했습니다.
서버 AI와 클라이언트 AI의 개선/수정이 있었습니다.
Posts
goguelike 시작타워 (starting tower) 스샷들
스크립트를 사용해서 매 서버 시작 시 마다 새로운 지형이 생성되므로 매번 다르게 만들어 지긴 합니다만 그래도 각 층별 테마는 유지 됩니다.
Posts
goguelike 개발진행 - 중2병스러운 장비이름등
약 2주간 진행된 작업 정리 입니다.
아래 동영상은 최신 버전goguelike 의 4배속 플레이 입니다.
오류가 발생했습니다. www.youtube.com에서 동영상을 시청하거나 브라우저에서 자바스크립트가 사용 중지된 경우 사용 설정하세요.
보이는 변동사항으로는
장비 슬롯의 이름과 기능이 바뀌었습니다. 타일 형태 : 슬롯 이름 : 전투기여 { Weapon : Attack [ Shield : Defence ^ Head : Defence % Armor : Defence
Gauntlet : Defence ; Boots : Defence o Ring : Attack Amulet : Attack 입니다.
Posts
수다스러워진 goguelike, 2배속 플레이 , damping move
오류가 발생했습니다. www.youtube.com에서 동영상을 시청하거나 브라우저에서 자바스크립트가 사용 중지된 경우 사용 설정하세요.
동영상은 2배속으로 플레이 ( 초당 4 action ) 한것을 캡쳐 한것입니다.
주요 변경사항으로는
일단 화면에 표시되는 정보가 늘어서 수다스러워 졌습니다. 층이 바뀌고, kill , killed, level up, down, 서버 공지 등의 정보가 뷰포트 아래에 html뿐 아니고 뷰포트 중앙 상단에 크게 표시 됩니다.
그리고 경험치, hp,ap변화가 작게 플레이 캐릭터 위쪽으로 표시 됩니다. 정보량이 많아지면 마치 불이 타오르는 것 같이 보이기도 합니다.
Posts
goguelike 작업 진행 사항, 뷰포트의 변형 테스트
오류가 발생했습니다. www.youtube.com에서 동영상을 시청하거나 브라우저에서 자바스크립트가 사용 중지된 경우 사용 설정하세요.
추가 업데이트로 가속/정속 스크롤 옵션
오류가 발생했습니다. www.youtube.com에서 동영상을 시청하거나 브라우저에서 자바스크립트가 사용 중지된 경우 사용 설정하세요.
내부적인 개선 작업이 어느정도 진행되어 또다시 webclient 개선 차례가 돌아 왔습니다.
위 동영상은 뷰포트의 시인성을 좀 높여 볼까 하고 테스트 해본 뷰포트 변형 입니다. 중앙부를 크게 주변 부를 작게 보이는 변형을 시도 해 봤는데
…
…
멀미 나는 군요. ㅠㅠ
다른 변형들을 좀더 테스트 해봐야 겠습니다.
Posts
goguelike에 역대 플레이어 랭킹 을 추가 했습니다.
애초에 그라운드 서버( 여러 타워 관리자 )를 만든 중요한 이유중 하나가 모든 타워를 아우르는 플레이어 랭킹을 표시 하고 싶었기 때문입니다.
역시 오락이라면 high score가 기록 되어야지! 하고 생각하기 때문이기도 하지요. ^^
이 플레이어 랭킹은 게임중에 표시되는 랭킹과는 좀 다릅니다. 게임 내에서 표시되는 랭킹은 그 타워 내의 모두 ( npc를 포함) 에서 현재 플레이어 캐릭터의 실시간 랭킹입니다. 그리고 이 high score 는 모든 타워에서 게임을 끝낸 플레이어 들간의 (npc 미포함) 랭킹이 됩니다.
Posts
gogulike에 ground 서버를 추가 했습니다.
외부로 오픈된 여러개의 tower가 생기니 여러개의 tower 를 관리 ( 시작, 중지 , monitor , 배포 ) 해야 할 필요성이 높아 졌습니다.
그 동안 애써 외면 하고 있었지만 더 미루기는 힘들어서 tower 관리 서버를 만들었습니다.
가장 어렵고 또 중요한 “서버 이름” 은 ground 서버로 정했습니다.
게임 인트로에 나온 여러개의 탑이 있는 장소 이며 또 탑을 세우거나 없애거나 하는 일도 담당해야 하는 서버라 그 역할에 어울리게 ground 입니다.
외부로 노출될 일은 없을 서버라 ( 노출되면 보안 사고!
Posts
goguelike 인트로 업데이트 , 탑 목록수정, 폰트 변경, 타일 변경
일단 눈에 보이는 변경사항들은 인트로가 조금더 스토리 스럽게 업데이트 되었습니다. 그리고 그에 맞춰서 탑의 목록 표시가 자연스럽게 변경 되었습니다. 탑 목록을 가져 오는 내부 구조는 완전히 새로 만들어졌습니다. 웹 폰트와 오브젝트 타일을 생성할때 사용하는 폰트를 좀더 레트로 스럽게 수정하였습니다.
내부 적으로는 서버 목록 변경, 서버 릴리스 방법 변경 , 지형 생성 스크립트 변경 , 웹 어드민 의 업데이트, 어드민 웹 용 지형 이미지 생성 업데이트, zombie 의 homefloor 변경, 랭킹 시스템 업데이트, 얼음위에서 미끄러짐 변경 등이 있었습니다.
Posts
goguelike에 zombie를 추가 했습니다.
goguelike는 로그라이크게임치고는 꽤나 여유로운? 플레이가 가능한 편입니다. 그 이유는 진성 로그라이크와는 달리 플레이중 죽어도 이어서? 플레이가 가능하기 때문입니다. ( 로그라이크의 특징중 하나가 죽으면 새로 시작입니다. ) ( 자비로운? goguelike는 경험치가 좀 깍이고, 아이템을 좀 드랍하는 정도로? 끝납니다. -어디서 많이 본듯하지만 - )
다만 공개한적 없는 전용 클라이언트(linux - sdl용) 에서 플레이할때와는 달리 웹 클라이언트로 포팅된후 생긴 문제가 하나 있습니다.
브라우저 페이지를 실수로 reload ( F5를 누르거나 모바일에서 아래로 당겼다가 놓거나 ) 하는 경우 게임이 끝나 버린다는 거지요.
Posts
goguelike 뷰포트 모드 전환
명령버튼을 누르기 편하도록 뷰포트가 차지하는 공간을 선택할수 있도록 했습니다. 실제로는 가로 모드와 세로 모드도 동적으로 변환되는데 동영상 캡쳐가 안되어서 따로 캡쳐했습니다. 오류가 발생했습니다. www.youtube.com에서 동영상을 시청하거나 브라우저에서 자바스크립트가 사용 중지된 경우 사용 설정하세요.
오류가 발생했습니다. www.youtube.com에서 동영상을 시청하거나 브라우저에서 자바스크립트가 사용 중지된 경우 사용 설정하세요.
그 외에 추가로 웹 쿠키 를 사용하여 플레이용 닉네임을 기억하도록 하였습니다.
roguelike 라는 장르의 특성상 게임 플레이가 끝나면 사용자가 플레이한 캐릭터도 사라지기 때문에 기본적으로 goguelike는 사용자 정보를 서버에 저장하지 않습니다.
Posts
goguelike 가로모드, 인트로 추가
눈에 띄는 변화는 가로 세로 모드를 지원합니다. css grid와 Responsive Web Design 이란것을 적용한것인데 의외로 쓸만했습니다.
휴대폰에서도 크롬을 사용하면 플레이가 가능한데 화면이 보기 불편해서 뷰포트를 기존 wide(16:9?)에서 정사각형이 되도록 조정하고 추가로 landscape 모드도 지원하게 했습니다. 즉 뷰포트는 정사각형이고 그외 명령, 정보 공간들이 아래와 오른쪽으로 이동합니다.
명령버튼들을 사용하여 키보드 없이도 터치와 버튼을 사용하여 플레이가 가능하도록 모든 명령을 화면 버튼으로 실행가능하도록 했습니다.
그리고 간단하게나마 인트로가 생겼습니다.
그리고 자세히 보면 보입니다만 ^^ 플레이 할수 있는 탑이 2개 입니다.
Posts
Goguelike2 pre-alpha 테스트 플레이 오픈합니다.
( 동일한 글이 제 블로그 http://kasw.blogspot.com/2018/05/goguelike2-pre-alpha.html 에도 올라가 있습니다. )
Goguelike2 pre-alpha 테스트 플레이 설명
그동안 혼자서 만드는 MMO 라는 목적으로 작업한 goguelike2 가 프리 알파 정도 상태긴 하지만 일단 테스트 플레이가 가능한 수준이 되어서? 공개합니다.
MMO 지만 MMORPG 는 아닙니다. roguelike를 MMO 로 만들어보는 것이라 MMORLG 라고 할수 있습니다.
접속 방법은 브라우저를 사용해서 아래있는 링크로 접속하시면 됩니다. 접속시 10Mbyte 좀 넘는 데이터를 다운 받게 되니 주의해주세요.
다만 firefox 는 느려서 잘 안되는 것 같고 개발에 사용중인 chrome에서는 잘됩니다.
Posts
goguelike에 대량의 수정을 시도하다가.
말하자면 fork를 해서 작업을 시작할 정도로 대형 수정 작업을 진행하고 있었습니다만.
( 잠정적으론 goguelike2 가 될 것으로 예상하고 있습니다. )
습관적으로 *.a 파일을 지우기 위해 ctrl-a , shift-del 을 했다가 소스를 홀라당 날려 먹었습니다. ( pkg 폴더가 아니고 src 폴더더군요. ;; )
..
..
..
..
..
..
*.a 를 지우는 것은 gosublime 이 background build 해둔 package 파일들이 가끔 문제를 일으켜서 생긴 습관입니다만..
이것이 문제를 일으킬줄이야. ;;;
소스를 날려 먹은 것을 깨닿고 침착하게 git 에서 꺼내오려고 하니.
Posts
goguelike ver 0.40.1 동시 접속 성능 테스트 결과
기록을 위해 적습니다. 4000 클라이언트 동시 접속 ( 1000 x 4 ) 테스트
서버 와 클라이언트 가 바뀐것 같은 느낌이 들면 기분탓^^ 입니다. ( 테스트 클라이언트가 클라이언트 AI 지원을위해 메모리 사용량이 많은 탓.)
총 active object는 6000여개로 이중 2000여개는 서버사이드 AI 4000 개는 클라이언트 AI 즉 테스트중에 서버에서는 6000여개의 AO가 활발하게 활동중이었음.
클라이언트 i5-2500 3.3Ghz 4c4t 16Gbyte ram cpu 50% 정도 사용 메모리는 1000클라이언트 당 6G : 결국 넘쳤음.
서버 ( 한성 인민에어 ;; ) 하스웰 i5 4250U ( 1.
Posts
go언어로 TCP server와 GUI client를 만들어 보기.
3000라인 이상을 공용 package로 분리해 내고도 goguelike에 남은 코드가 아직도 9000라인이 넘기 때문에
TCP server 와 GUI client로 사용할만한 예제를 따로 만들었습니다.
결과적으로는 http://kasw.blogspot.kr/2015/02/go-tcp-serverclient.html http://kasw.blogspot.kr/2015/02/go-gui.html 을 합치는 프로그램을 만드는 것이됩니다.
원래 계획으로는 framework으로 만들어 볼 생각이 있었는데 생각보다 framework과 custom logic의 분리가 까다로운 관계로 그냥 server와 client의 예제가 되었습니다. 코드는 새로 작성된 것이지만 전체 적인 구조와 작동은 goguelike와 거의 같은 형태입니다. ( 적당히 단순화 되긴 했지만 )
예제가 하는 일은 ( logic을 가능한 단순한것으로 선택했습니다.
Posts
go언어에서 tcp server/client 의 전형적 형태. - 라이브러리화.
이미 두곳을 통해서 부분부분은 소개 했었지만
http://kasw.blogspot.kr/2015/02/go-goroutine.html http://kasw.blogspot.kr/2015/02/goguelike.html
기존 netspeed 테스트 프로그램과 goguelike에서 사용하고 있던 tcp server/client 구조를 본격적으로 재사용 가능하게 수정한 것입니다. ( 그래봐야 간단합니다. ^^)
tcp책에 나오는 전형적인 tcp server의 구조는 대부분의 언어에서 새 process / thread를 실행하는 비용이 너무나도 큰 관계로 이론적으로 설명하는 용도로만 사용하고 실제 서비스를 만드는 데에는 사용할수 없습니다.
다만 go언어에서는 go routine이 존재 하기때문에 이 “전형적"인 구조가 실용가능하게 됩니다. ( 꼭 go 언어가 아니라도 python stackless, greenlet , 또는 이와 유사한 micro thread를 지원 하는 모든 언어에서 가능합니다만 이를 지원 하는 대중적 언어가 별로 없지요.
Posts
go 언어로 GUI 프로그램을 만들기.
goguelike는 애초 목표가 필요한것은 찾아 쓰고 없으면 만들어 사용한다. 였고 필요한 기능은 다중 client를 지원하는 TCP server GUI client with mouse and keyboard input server info by web auto generated terrain server and client side AI 그외 system의 contents에 해당하는 부분들 정도였습니다.
대부분의 기능은 구현이 가능했는데 go 언어용 GUI 라이브러리 만은 잘 보이지 않더군요.
실제로 검색해 보면 대부분의 GUI 라이브러리들이 만들다 만것들이거나 아니면 더이상 관리되지 않는 것들, 시험삼아 만들어 본것들 이었습니다.
Posts
go언어에서 2d tile based space 용 라이브러리들.
제목이 저모양ㅜㅜ 인 이유가 goguelike에서 재활용성이 좋아 보이는 라이브러리를 뽑아내고 있는데 딱 저 카테고리용(그리고 뭔가 예로는 쓰기 그저 그런 ) 라이브러리 들이라 그렇습니다.
goguelike가 딱 이차원 tile기반 으로 만들어진것이라 가장 바닥을 구성하는 것들인데 기능으로 보면 꽤나 범용성이 있기에 공개/소개 합니다.
2d path finding https://github.com/kasworld/go-astar 이건 제가 만든건 아니고 다른 분이 만든것을 fork해서 살짝 추가해서 사용하고 있는 것입니다.
2차원을 다루기 위한 기본 자료구조인 좌표 처리용 2d vector (정수용) https://github.com/kasworld/ivector2d
영역을 다루기 위한 ( 역시 정수용) https://github.
Posts
go 프로그램에서 실시간 통계를 기록하고 싶을때
goguelike의 webinfo 페이지를 보면
Stat total:4660/ 3.0/s lap:1/ 39.4/s
같은식의 실시간 통계를 볼수 있습니다. 이런식으로 어떤 행동의 총 횟수, 초당 일어난 시간(즉 평균) , 최근 횟수, 마지막 초당 횟수 등을 조사 기록하려면 꽤나 귀찮은 프로그래밍이 필요합니다.
그래서 제가 만들어 쓰는 것는 actionstat 패키지입니다.
사용 예는 https://github.com/kasworld/netspeed 의 서버 코드를 보면 됩니다만.. 간단히 적어보면
// init obj stat := actionstat.NewActionStat()
// see stat
log.Info("%v", stat)
stat.UpdateLap()
// update info stat.Inc()
같은 형태가 됩니다.
Posts
go 언어용 python-like log 모듈
goguelike 작업을 하면서 만들어진 모듈들 중 범용성이 높은 모듈들을 정리해서 공개하는 작업을 시작합니다.
이미 기존의 글들을 통해 소개된 모듈들은 id 생성 :http://kasw.blogspot.kr/2015/01/go-serial-id.html rand : http://kasw.blogspot.kr/2015/02/go.html runstep : http://kasw.blogspot.kr/2015/02/goroutine.html
이 있습니다. - 각각의 글을 수정해서 github 링크를 추가해 두었습니다.
이번에 소개할 모듈은 pyhon log처럼 사용하는 log package입니다. log 용으로 만든 것으로 rand 때와 같이 기존 go 언어의 표준 라이브러리를 확장하는 개념으로 만든것 입니다.
만든 이유는 아무래도 python을 쓴 기간이 길다보니 python 스타일의 로그 함수가 익숙한 관계로 최대한 비슷한 느낌으로 사용할수 있게 만들어 사용 중입니다.
Posts
go 언어에서 여러개의 goroutine을 동시에 한단계씩 실행하기
2015-02-24 추가 구글+ Jae-min Park 님께서 제가 잘못알고 있던부분을 알려주셨습니다. sync 의 waitgroup은 goroutine의 종료를 wait하는 것이 아니고 Done을 wait하는 것이므로 충분히 아래의 코드를 대치하는 것이 가능한 듯합니다. ( 결국 아래 코드는 뻘짓인 셈입니다. ^^;; )
Jae-min Park, Jongmin Kim 께 감사드립니다.
RunStep 과 sync.groupwait의 차이는 실행/완료시 인자를 전달 할수 있느냐 + 각각 step을 제어 할것이냐 아니면 group으로 제어 할것이냐 의 차이가 있어 용도에 맞게 쓰면 될것 같기도 합니다.
이하 원문입니다.
Posts
go 언어에서 동시에 실행되는 goroutine의 수를 제어 하기.
goguelike용 loadtester를 만들면서 사용하는 방법입니다.
loadtester는 일정시간동안 서버에 클라이언트로 접속해서 부하를 주는 프로그램으로 부하를 주는 시간과 동시에 몇개의 connection을 사용할것인지를 인자로 받습니다. 서버 입장에서는 하나 하나가 실제 user처럼 보이게 되는 것이 중요하고, 따라서 loadtester는 UI가 없는 dummy client와 client side AI를 사용하게 됩니다. 그리고 또 중요한 것이 부하를 거는 시간 내내 접속을 유지 하는 것이 아니라 각 dummy client를 무작위 시간동안 작동한후 connection을 종료 합니다. 그러면 loadtester는 이를 감지한후 새 dummy client를 실행 접속해야 합니다.
Posts
go 언어에서 function object 사용하기. 반복루프 위임 패턴? (delegate loop)
이것 역시 대단한 팁이라긴 뭐합니다만 “작업하다 보니 이런 형태의 코드를 많이 짜고 있더라” 입니다. 주로 나오는 형태는 array/slice 들의 내용에서 조건에 맞는 뭔가를 찾아야 하는 경우에 쓰게 되더군요.
그중에 제일 짧은 코드를 예로 보면
//start
var Dir2Info = []struct {
Name string
Vt [2]int
Len float64
}{
Dir_stop: {".", [2]int{0, 0}, 0.0},
Dir_n: {"N", [2]int{0, -1}, 1.0},
Dir_ne: {"NE", [2]int{1, -1}, 1.4},
Dir_e: {"E", [2]int{1, 0}, 1.0},
Dir_se: {"SE", [2]int{1, 1}, 1.
Posts
go 언어를 사용하면서 표준 라이브러리를 확장하고 싶을때.
너무 간단해서 적기도 뭐한 팁이지만
가끔씩 표준 라이브러리가 제공하는 struct( class 가 아니지요 ^^) 를 확장해서 내가 필요한 함수들을 추가 하고 싶을때가 있습니다.
goguelike 에선 표준 분포에 따른 랜덤 함수를 상당히 많이 사용하는데 표준 라이브러리는 기초적인 함수만을 제공하여 더 쓰기 편한 형태의 함수를 추가해서 사용하고 있습니다.
기본적으로는 go 언어의 embedded field를 사용하는 것이고 이것을 통해서 embedded된 struct가 제공하는 함수들이외에도 원하는 함수를 추가해 사용할수 있습니다.
//start
package rand
import (
r "math/rand"
"time"
)
type Rand struct {
*r.
Posts
go언어를 사용하면서 주의 할 부분
1. struct embedding 한 경우 embeded struct에 exported filed 가 없으면 embeding한 struct를 gob encode를 할수 없다. ( type xxx has no exported fields 에러가남 ) 간단한 해결책은 dummy exported field를 추가 하는 것이다. ( 좀 보기 싫긴 하지만 )
type AAA BBB 형태로 정의한 경우 AAA 형 변수와 BBB 형 변수는 대입조차 안되지만 ( 에러가 남 ) 함수 인자로는 사용할수 있다. 즉 AAA를 받는 함수에 BBB 형 변수를 인자로 사용 할수 있다.
Posts
go 언어를 사용 할때 자주 쓰게 되는 코드 패턴들. serial ID 생성
package id
var genCh chan int64
func init() {
genCh = make(chan int64)
go func() {
var i int64
for {
i++
genCh <- i
}
}()
}
func GenCh() <-chan int64 {
return genCh
}
과 같이 쓰면 goroutine safe 한 id 생성기를 사용할수 있습니다.
실제 위 코드는 goguelike 의 id module의 일부 코드이기도 합니다.
사용할때는
objid := <-id.GenCh()
과 같은 형태를 사용하면 됩니다.
genCh 변수를 글로벌 변수 GenCh로 선언하지 않고 로컬 변수로 선언 한것은 다른 모듈에서 수정할 가능성을 막기 위해서 이며,
Posts
goguelike:baised 진행사항
딱히 외적으로 변화한 부분이 없는 관계로 포스팅이 뜸했습니다만..
내부적으로는 격변이라고 할 만큼의 수정이 있었습니다. ( 거의 모든 코드가 수정된 듯. )
기본적으로는 기존의 코드를 모두 refactoring해서 30여개의 모듈로 분리하는 작업이 완료 되었습니다.
그리고 client AI 를 위한 a-star 모듈과 이를 사용한 client AI 작업이 진행되었고 또 이를 이용한 loadtester 역시 만들었습니다.
클라이언트 쪽 변경사항이라면 서버와 같이 모듈화 작업이 진행되면서 다양한 형태의 클라이언트를 만들기 위한 clientbase 모듈을 만들고 이를 sdlclient 와 loadtester에 적욯하였습니다.
Posts
goguelike:Biased의 테스트 버전을 릴리즈 했습니다.
지난 몇일간 릴리즈를 위한 작업을 진행했습니다.
아직 완성된 것은 아니지만 실행해 볼수 있는 테스트 버전을 릴리즈 합니다.
일단 앞으로 goguelike관련 포스팅은 모두 http://goguelike.blogspot.kr/
에 올릴 예정입니다.
일단 실행 가능한 바이너리만 릴리즈 했으며 소스의 공개는 현재로서는 예정이 없습니다. 클라이언트인 sdlclient 와 서버 접속 라이브러리인 goguelib은 좀 정리가 되면 해볼까 고민 중입니다.
map editor인 edittower는 공개할만한 수준이 못되어 이번 릴리즈에서는 빠졌습니다.
Posts
goguelike map editor
지난 주 부터 작업해오고 있던 맵 에디터가 일단 작동하는 수준 까지 만들어 졌습니다. 에디터에는 여러가지 gui component 가 필요해서 무엇을 사용할까 계속 고민 하고 있었습니다만, 아무리 찾아보고 고민해봐도 클라이언트 라이브러리가 적당한 것이 없어서 결국 웹으로 만들어 보기로 결정하는 데 까지도 꽤 오래 걸렸습니다.
에디터가 아닌 클라이언트는 sdl 기반 라이브러리를 사용하였는데 이 것은 그야말로 간단한 그래픽 기능만 있는 것으로 각종 gui control을 지원 하지 않습니다.
게다가 이 sdl 라이브러리는 go의 goroutine 사용에도 여러 제약이 있는 관계로 서버 기능을 사용해야 하는 에디터용으로는 부적합하더군요.
Posts
goguelike 성능 테스트
지난주 이번주 동안 기본적인 서버/클라이언트의 안정화가 이루어져서 성능테스트를 해가면서 튜닝을 하고 있는 중입니다.
방금 끝낸 테스트를 기록차원에서 적어보면 사용 기계 cpu i2500 ( 4c4t ) , ram 16Gbyte에서 서버는 각 클라이언트당 5패킷 / 초 모드로 작동중이고 5000 클라이언트 시뮬레이터를 다른 기계에서 실행한 결과 입니다.
goguelike 13:41:44 server.go:169: tower test1 frame total:3801/ 4.0/s lap:5/ 4.8/s, gotoutine 5025 goguelike 13:41:44 server.go:173: floor0 AO(72/2232) PO(42/561) Packet(0/1157) goguelike 13:41:44 server.go:173: floor1 AO(69/2401) PO(42/630) Packet(5/2024) goguelike 13:41:44 server.
Posts
goguelike 상태 정보의 추가및 간단 설명.
동영상으로 보면 색감도 이상하고 해서 스샷을 올려봅니다. 상태 정보를 간단하게 설명하면 맨 위로부터 현재 타워의 이름 , 층(floor) 번호, 층 종류 사용자의 faction(자동으로 지정된 bias 그룹) , karma ( 자신의 bias와 faction간의 차이 ) action point( 행동력 ), hp ( 생명력 ) , 위치 , 현위치의 타일 종류 수동/자동 모드 , 사용자가 선택한 행동 + 방향 현재 층을 얼마나 발견 했는가 % , 죽은 수 , 킬 수 공격력( bias ) , 방어력 ( bias ) 8개 위치의 장비 및 공/방 영향 ( Attack/Defence ) 위칭으로 가는 계단 위치 ( 발견시 표시 ) , 아랫층으로 가는 계단위치 (발견시 표시 ) hp bar , 미니맵 , ap bar ( hp/ap는 중요한 값이라 잘보이게 bar로 표시 )
Posts
goguelike 클라이언트를 개선하고 있습니다.
reference 구현이라고는 해도 보기 좋고 쓰기 좋아야 한다고 생각해서 손을 대고 있는데 생각보다 손볼곳도 많고 시간도 꽤 들어가고 있습니다.
일단 grid를 추가하고 이전에 시야에 들어 왔던 부분은 현재 시야에서 안보이더라도 화면에 약간 어둡게 표시하도록 수정했는데 이것 만으로도 많이 좋아 보이게 되더군요. ^^
Posts
goguelike 클라이언트 개선
이런 저런 시도후에 제일 보기 좋은 형태를 찾았습니다. 화면 표시와는 별개로 아직 조작감은 좀 떨어지는 문제가 있지만 일단 이런 형태로 개선해 나갈 생각입니다.
Posts
클라이언트/서버로 완전 분리한 goguelike
그리고 추가로 클라이언트의 움직임을 부드럽게 만드는 시도를 하고 있는 중인데 꽤 까다롭습니다.
일단 모든 좌표는 타일단위의 좌표인데 이것을 그대로 적용하면 이동이 뚝뚝 끊어지듯 이루어져서 계속 보고 있으면 멀미가 나더군요. 그래서 일단 여러가지로 보정해서 부드럽게 타일간을 미끄러지도록 하는 시도를 하고 있습니다. 그리고 전체 시야의 이동도 타일단위가 아닌 중간 보간을 통한 스크롤을 하도록 해봤습니다.
그래도 예상한 쪽이 아닌 다른 방항으로 이동하는 경우 끊기는 움직임이 보이는 것은 어쩔수 없군요.
C/S 완전 분리는 이번이 처음 해보는 것도 아니고 처음 설계시 부터 준비하고 있던 것이라 예상보다 일찍 수일 만에 완료 되었습니다.
Posts
goguelike 진행사항
13일 동영상
15일 동영상
일단 karma 가 추가 되었고 , 장착 가능한 아이템들(그림은 아직 없지만) 그리고 ai 끼리의 전투가 추가 되었습니다.
기본적으로 상대방이 system ai인지 사람인지 구별을 하지 않는(못하는) 시스템으로 계획하고 있기에 사람끼리의 전투도 같은 형태입니다.
지금은 테스트 용이라 frame이 좀 빠릅니다만 실제 사용자가 control 하려면 속도를 좀 낮춰야 할것 같습니다.
동영상에서 오른쪽에 나오는 글 정보를 참고하시면 도움이 될듯 합니다.
그리고 층간 이동시 효과가 없어서 효과를 추가했습니다.
Posts
goguelike 미로 지형 - 얼음 마을 지형
보기만 해도 숨막히는 표준 - 미로 지형 입니다.
AP에 따른 행동 제약 - @ 끼리의 진로 방해 가능 + faction-skill 준비까지 진행되었습니다.
추가로 ice-town 지형 동영상입니다. 지형에 따라 ap가 줄어들어 이동에 제약이 생기는 것을 볼수 있습니다.
Posts
goguelike 미니맵 추가
표준 - 필드 타입 플로어 에서의 random walk
다른 윈도우로 맵을 보려니 불편해서 미니맵을 추가 했습니다. 그리고 동영상을 보시면 지형에 따라 이동속도가 다른 것을 보실수 있습니다.
준비하고 있는 플로어 타입은 도시, 마을, 필드 , 미로 표준, 불, 물 , 얼음, 땅, 공백 타입입니다. 조합해서 24 가지 파라메터를 기본으로 지형을 생성합니다.
Posts
goguelike - adventure of @
가제 goguelike - adventure of @ 의 스샷입니다.
추가된 미니? 맵
창을 통해서 집내부를 보는 상황 + 불 지형에서 가시거리가 제한 되는 상황
20개의 faction ( 동일 성향 집단 )을 만들었고, 그 faction에 따라 타 active object(user) 과의 관계가 형성되며 , passive object에도 faction을 부여하여 강화 또는 방해 효과를 줄수 있도록 했습니다.
동영상 ( 좀 깁니다. ) 과 동영상 촬영시 만들어진 미니맵
Posts
만들고 있는 것의 상태2 : "@"의 모험
^^;;
일단은 nethack 과 classic ultima 사이의 어딘가 가 될것 같습니다.
자동 생성 지형 + 방(집?) + 방을 연결하는 길 + 테라스 불,마그마,땅,물,얼음,(높은)돌벽, 창문(낮은 벽), 돌길, 열린문, 닫힌문, 잠긴 문 땅에 떨어져 있는 아이템, 돌아다니는 user . 사방으로 무한 반복되는 floor 여러 플로어로 이루어진 tower (들) 정도의 구성 요소를 가질 계획 입니다.
만들어질 서비스의 종류는 Role Playing Simulator. 줄여서 RPS ^^ 또는 (+system을 해서 ) RPSS
제작자의 특성상 Game이라기 보단 로그인 해서 사용하는( use , not play) simulator 가 될것 같습니다.
Posts
요즘 제가 만들고 있는 것
클라이언트 프로토타입 랜덤워크 지형 생성 기반 데이터 시각화 생성된 지형 ( 표준 도시형 )
궁금해 하시는 분도 있는 것 같아서 올려 봅니다. 기본 적으로 online server - client , 턴제 , tile 기반의 floor, 자동 생성 지형등을 특징으로 하는 것일 예정입니다. 아직 클라이언트 그래픽이 없는 관계로 위와 같은 모양입니다.