전체 글 (24)

━━━━ ◇ ━━━━
TWITTER-BOT

트위터 자동봇 - 커뮤니티 TIME REWINDER 점령 시스템 구현

느와르 점령전 커뮤니티 TIME REWINDER의 전체 시스템 구현을 담당하였습니다.

커뮤니티의 모든 시스템은 구글 스프레드시트 연동 트위터 자동봇으로 진행됩니다.

 

 

연동중인 구글 스프레드시트는 커뮤니티의 진행에 따라 수동으로 조작이 가능하며(체력 혹은 소유 아이템 등...) 이는 실시간으로 트위터 자동봇에 반영됩니다.

여기서의 모든 응답 계정의 DM 및 멘션은 자동 스크립트입니다.

 

 


 

1. 기본

각 진영이 가지고 있는 공동 재화(시간)의 경우, 진영별 계정의 바이오에 기입되며 이는 구글 스프레드시트와 자동으로 연동이 되어 소유 시간의 변동이 생길 경우 바이오의 시간도 함께 바뀌게 됩니다. 

 

소유 시간은 진영 캐릭터가 시간을 소모할 때마다 자동으로 차감됩니다. 

 

 

각 진영이 가지고 있는 공동 재화(시간)의 경우, 진영별 계정의 바이오에 기입되며 이는 구글 스프레드시트와 자동으로 연동이 되어 소유 시간의 변동이 생길 경우 바이오의 시간도 함께 바뀌게 됩니다. 

 

 

 

 


 

 

 

 

2. 점령전 진행

 

점령전은 아래의 맵에서 진행이 되며, 캐릭터들은 최소 1칸에서 6칸까지 랜덤으로 구역을 이동하게 됩니다. 

 

점령전이 진행되는 맵

 

 

 

 

 

이 때 자신의 진영이 점령한 지역으로 들어왔을 경우 소정의 재화(시간)을 획득하고, 상대 진영의 지역으로 들어갔을 경우 시간을 지불하게 됩니다. 

 

 

[이동] 명령어를 사용하여 맵을 이동합니다. 

 

 

 

이때 캐릭터는 자신이 도착한 지역의 [점령]을 진행할 수 있습니다.

 

 

 

 

 

 

 [점령]을 선언한 후 10분간 구역을 벗어나지 않을 경우 구역을 점령할 수 있습니다. 

 

 

 

 

 

 

다른 진영의 캐릭터 두명이 같은 구역에서 마주쳤을 경우, 자동으로 자동봇이 전투를 진행합니다.

 

 

 

 

 

 

 


 

 

 

 

3. 점령전 - 특수 이벤트

 

 

 

 

일부 구역에는 랜덤 미션이 존재합니다. 랜덤 미션이 존재하는 구역으로 들어왔을 경우 캐릭터는 돌발 미션을 진행합니다. 

 

 

 

 

 

 

 

 

캐릭터는 주어진 키워드를 이용해 미션을 진행하며, 이 또한 랜덤한 확률로 성공/실패를 안내합니다. 

 

 

 

 

 

 

 

이후 자신의 미션 성공 결과에 따라 소정의 재화 획득/패널티를 진행합니다. 

 

COMMENT
━━━━ ◇ ━━━━
TWITTER-BOT

트위터 자동봇 - 커뮤니티 TIME REWINDER 일상 시스템 구현

느와르 점령전 커뮤니티 TIME REWINDER의 전체 시스템 구현을 담당하였습니다.

커뮤니티의 모든 시스템은 구글 스프레드시트 연동 트위터 자동봇으로 진행됩니다.

 

 

연동중인 구글 스프레드시트는 커뮤니티의 진행에 따라 수동으로 조작이 가능하며(체력 혹은 소유 아이템 등...) 이는 실시간으로 트위터 자동봇에 반영됩니다.

여기서의 모든 응답 계정의 DM 및 멘션은 자동 스크립트입니다.

 


 

1. 일상 - 정기 갬블

캐릭터들은 매일 2시간 간격으로 진행되는 단체 정기 갬블에 참가할 수 있습니다. 

 

경마

매 정해진 시간마다 자동봇이 경마의 진행을 알립니다. 

 

 

 

 

이때, 캐릭터는 올라온 경마 개시 트윗에 재화(코인)을 베팅할 수 있습니다. 베팅이 성공적으로 이루어질 경우 자동봇이 확인 멘션을 보냅니다. 

 

 

양식: [경마] (nn코인이 포함된 행동지문) 

 

 

 

이후 자동봇은 가장 먼저 결승선에 도착한 경주마를 선출하고, 해당 경주마에 베팅한 캐릭터에게 배당금을 자동으로 지급합니다.  

 

 

 

 

 

 

 

룰렛

매 정해진 시간마다 자동봇이 룰렛의 진행을 알립니다. 

 

이때, 캐릭터는 올라온 룰렛 개시 트윗에 재화(코인)을 베팅할 수 있습니다. 베팅이 성공적으로 이루어질 경우 자동봇이 확인 멘션을 보냅니다. 

 

 

양식: [룰렛] (nn코인이 포함된 행동지문) 

 

 

 

 

이후 자동봇은 룰렛의 베팅에 성공한 캐릭터에게 코인을 지급합니다. 

 

 

 

룰렛 게임의 규칙

 

 

 

 

 


 

 

 

 

 

2. 일상 - 1:1 갬블

캐릭터들은 캐릭터끼리 게임을 진행할 수 있습니다.

 

온 더 아이(친치로) 

도박 '친치로'의 룰을 차용한 갬블입니다. 

 


스트레이트:
다이스의 숫자가 1 / 1 / 1

선공의 승,  5배의 코인을 가져갑니다.

대쉬: 다이스의 숫자가 전부 동일할 경우
선공의 승,  3배의 코인을 가져갑니다.

슬라이스: 다이스의 숫자가 4 / 5 / 6
선공의 승, 2배의 코인을 가져갑니다.

스트레이트:  두개의 다이스가 같은 숫자이고 한 눈이 다를 경우
후공이 다시 한번 다이스를 굴려 승패를 가립니다. 이때 남은 하나의 눈이 클 수록 패가 높습니다.

스트레이트: 이하 아무런 패도 해당하지 않을 경우
후공의 승, 후공이 2배의 코인을 가져갑니다.

드롭: 다이스의 숫자가 1 / 2 / 3
후공의 승, 후공이 4배의 코인을 가져갑니다.

 

 

 

 

 

 

 

 

 

포커

카드의 교체가 가능합니다.

 

 

 

 

 

 

 

 


 

 

 

 

3. 일상 - 1:1 갬블

 

몬테

세 개의 컵으로 진행하는 일명 '야바위'를 진행합니다.

 

 

  1. 몬테는 딜러가 제시하는 세개의 컵 중 주사위가 들어있는 컵을 고르는 게임입니다.
  2. 딜러 계정을 태그한 후 [몬테] 커멘드와 함께 코인을 베팅합니다.
  3. 딜러가 주사위를 섞으면 어디에 주사위가 있을지 엿볼 수 있습니다. 엿보거나 엿듣는 RP를 제시해주세요. (이는 생략이 가능합니다.)
  4. 딜러에게  이후 왼쪽 /오른쪽 / 가운데 중 주사위가 있을 것 같은 곳을 고릅니다.
  5. 다이스가 있는 위치를 정확히 맞추면, 나온 다이스값*베팅한 코인만큼 얻을 수 있습니다.
  6. 틀릴 경우 한번에 한해 두 개의 컵 중 하나를 고를 수 있습니다. 가능합니다. 단 이때 원래 얻을 수 있는 배당금/2 배의 코인을 획득합니다. 

 

 

 

 

 

 

COMMENT
━━━━ ◇ ━━━━
MEMO

Signature

COMMENT
━━━━ ◇ ━━━━
DEVELOPMENT

아보카도 에디션 - 구글 캘린더 연동 스케쥴 페이지

1. 시작에 앞서

구글의 장점은 역시 구글 그 자체가 이 시대에 가장 거대한 플랫폼이라는 점이라고 생각한다. 

그 어떤 라이브러리가 구글API와의 연동을 지원하지 않겠어...

아이폰을 사용하면서도 아이폰 내장 캘린더를 사용하는 것이 아니라 아이폰 캘린더 앱에 구글 캘린더를 연동시켜 사용하는 것이 훨씬 편리하다. 애플놈들이 그리 호락호락 넘겨줄 리가 없는데도. 

 

구글 API를 사용하면서 단 한번도 안 되는 거 아닌가? 라는 걱정을 해본 적이 없다.

뭐든 보여주고 뭐든 가져가게 해준다. 네이버 캘린더처럼 꽁꽁 싸매는 것이 아니라. 

...요즘은 또 아슬아슬하긴 하지만.

 

구글 캘린더 자체에서 제공하는 iframe 코드는 못생겼다.

보기에도, 관리하기에도, 보안에도 좋을지 몰라도. 

 

애초에 내가 외형을 신경쓰지 않았다면 개인 홈페이지 작업을 시작하지도 않았을테고 디자인도 글도 그림도 코딩도 하는 놀러오세요 휘핑크림 카페 떡볶이가 맛있어요 밤에 와인바를 여는 이 되지 않았을 것이다...

 

괜찮은 라이브러리를 찾아 며칠간 docs를 뜯어보고 열어보고 적용해보고 해봄. 

...물론 FullCalendar만. 나를 계속 피말리게 한 건 따로 있고. ToolTip이라고.

 

FullCalendar는 version update가 될 때마다 휙휙 바뀌어서 Fullcalendar측에서 제공하는 문서가 아닌 다른 게시글들은 다 쓰지도 못하는 코드들이 되어버렸다. 스택 오버플로우나 다른 블로그에서 본 함수를 실행시키면 undefined라고 해버리니... 저기요 그거 1년전엔 당신 함수였거든요!?

 

 

 

 

 

 

2. 적용 페이지

 

 

 

FullCalendar/Avocado Edition

 

 

 

 

 

 

 

이번에도 슬쩍 아보카도 에디션과 그누보드를 열고 mysql에게 노크해서 자리 좀 내어달라고 했다. 추가하는 것 자체는 상관 없는데 후에 새로 에디션을 설치할 때도 사용할 수 있게 mysql 설치 파일도 고치는 건 좀 귀찮단 말이지... 하지만 css파일 열어가면서 하나하나 찾으면서 또 이게 무슨 색이고 무슨 색이고 찾는 것보단 한번 일 이렇게 하는 게 낫다. 

물론 이렇게 말할 수 있는 건 결국 다 했기 때문이다. 

 

할때만 해도 너무 하기 싫어서 평생 갠홈 색 안 고치고 말지 하고 땡깡부렸음. 

 

 

 

 

 

 

3. 옵션-ToolTip

 

 

 

 

지옥의 tooltip. 내가 하고 싶은 건 어? 마우스 올리면 information 뜨고! 치우면 사라지고! 

 

1. 온갖 모든 Fullcalendar 자료에서 나오는 tooltip의 경우 지금의 Fullcalender.v5에서 지원하지 않음. 

2. 그래서 또 Tippy.js를 써서 가져오려고 하니 이제 또 html서식이 적용이 안됨. 

3. 그 와중에 mouseover 이벤트 함수 이름도 또 바뀌어서 한창 docs 들여다봄 

 

그래도 어떻게든 해결했음. 어떻게든 사람은 방법을 떠올리게 되고...... 하지만 tooltip theme custom을 한창 들여다보고 뒤집고 하다가 태생적인 한계를 깨닫고 원색으로 밀어버린 건 아마 죽기 전에도 누워있다가 빌어먹을 Tippy 내가 졌다고 생각마라! 이럴 것 같다... 내가 하고 싶었던 건 header를 분리해서 색을 따로 넣는 거였는데........ 이것 또한 Tippy의 태생적인.... 뭐시기겠지... 일부만 색칠할 수 있게....

 

...

...

...

이거 포스트 쓰다가 생각했는데 background color를 내가 혹시 gradient로 주면 원하는 이미지가 되지 않을까? 

하지만 하지 않는다. 절대로. 난... 하지 않을 것이다... 이미 충분히 맘에 들어... 진짜임 거울 보고 스스로를 좀 세뇌하고 오겠음 

 

그리고 또 삽질을 했던 건 이거. 

 

견련론 스케쥴 (duration) / 하이미라 (all-day) 스케쥴 표현 방식의 차이. 

 

난 너무 하이미라처럼 표시를 하고 싶은데 (사실 구글 캘린더의 저런 모양에 익숙해져 있고) 그런데 계속해서 2pm 견련론처럼 떠서... 너무 화가 나서 머리를 쾅쾅 책상에 박았는데 포기를 하니 마음이 좀 나아졌다. 

 

그리고 숫자 표시 포멧을 좀 입맛따라 바꿨더니 보기도 좋고. (사실 구글 캘린더나 윈도우10 내장 캘린더를 따라간 감이 없지않아 있지만.) 

 

툴팁 적용을 하기 전의 시험적인 calendar 적용은 이미 이 티스토리에 자동봇 스케쥴 페이지로 구현을 해봤고. 티스토리... 좋아... css 파일을 건들 수 있다는 점에서... js도 넣을 수 있다는 점에서... 포스타입과 다른 자유로움... 포스타입에다가 iframe으로라도 넣고 싶어서 거의 기어다녔는데 포기했던 과거를 떠올림... 거의 유사 github.io가 아닌가... (내가 좀 늦은 거겠지만...) 브런치도 괜찮다는데... 

 

 

 

 

 

 

4. 옵션-List

 

 

 

 

여기도 툴팁을 적용해두긴 했다. 뭘 넣고 뺄지 무척이나 고민했던 기억이 난다. list도 저번주, 다음주 일정으로 돌릴 수 있는데 그러면 그 위의 GridView와 일정이 어긋나서... 너무 고민을 하다가 아예 이번주 일정만 뜨게 했던 것 같다. 

 

사실 이것도 정확히는 내 티알 일정보단 커미션 스케쥴 리스트업을 하고 싶었는데... 자동봇의 경우 nn일동안 지속되는 all-day 스케쥴이기 때문에 내가 원했던 것은 이번주 일정 : 커미션A / 커미션B 였는데 정작 나오는 건 이번주 일정: 커미션A(월) / 커미션A(화) / 커미션A(수)... 였기 때문에...

 

...역시 스스로 타협을 잘 봐야 할듯. 

 

 

 

 

 

 

5. 앞으로의 과제

캘린더의 경우 그누보드 자체 기능인 내용(content)에서 구현을 하는데 페이지같은 경우에는 멤버 접근 설정이 어렵네... 메뉴에 간단하게 표현하고 싶어서 조금 꼼수를 써서 옮겨뒀는데... content의 DB table을 좀 바꾸고 바꾸는 김에 겸사겸사 멤버란도 비슷하게 허가된 자만 접근 가능하게끔... 해봅시다. 

 

아무튼 애매하게 눈만 높아져가지고 css 하는데 시간 다 잡아먹음 

 

그리고 차근차근 구현중인 아보카도 에디션 미니룸 스킨... 기능적인 것은 (드래그 및 드롭, 자동 위치 저장 등...) 전부 어 이게 되네? 했으니 차근차근 코딩하는 일만 남았음 그게 손을 단순히 놀려야 하는 건데 너무 힘들어서 그런 거지... 아자아자 닥쳐오는 것들 어떻게든 쳐내고 있다 난 할 수 있다 파이팅!!!! 

 

COMMENT
━━━━ ◇ ━━━━
TWITTER-BOT

트위터 자동봇 - 커뮤니티 SET TIME OUT 전체 시스템 구현

영화 <인타임>기반 배틀로얄 자캐 커뮤니티 SET TIME OUT(@setTimeOut2020)의 전체 시스템 구현을 담당하였습니다.

커뮤니티의 모든 시스템은 구글 스프레드시트 연동 트위터 자동봇으로 진행됩니다.

 

 

연동중인 구글 스프레드시트는 커뮤니티의 진행에 따라 수동으로 조작이 가능하며(체력 혹은 소유 아이템 등...) 이는 실시간으로 트위터 자동봇에 반영됩니다.

여기서의 모든 응답 계정의 DM 및 멘션은 자동 스크립트입니다.

 


 

1. 맵 배치 및 이동

필수 참여 시간 전, 캐릭터는 랜덤으로 아래의 맵의 칸 중 한 곳에 위치하게 됩니다. 

 

실제 캐릭터들이 움직일 맵

 

 

 

 

스토리 진행 계정(혹은 총괄 계정)이 [시작 위치 고지] 및 [게임 개시]를 자동봇에게 선언하면 자동봇은 자동으로 해당 캐릭터들에게 랜덤으로 위치를 배정하여 DM으로 정보를 전송합니다.

 

 

양식: [시작 위치 고지] @다이스봇

 

 

 

실제 캐릭터들이 배치된 후 자동으로 자동봇이 전송하는 DM

 

 

 

이때 자동봇이 출력하는 대사는 구글 스프레드시트에 기입할 수 있으며, 위치 내에 준비된 재화(시간) 혹은 아이템을 실시간으로 입력할 수 있습니다. 

 

 

 

 

 

 

이후 캐릭터가 [이동] 선언을 할 경우 캐릭터가 이동하며, 이때 캐릭터의 이동시간과 위치는 구글 스프레드시트와 연동됩니다.

 

 

이동기록은 유닉스 시간으로 기록되며, 초단위로 환산됩니다.

 

 

 

 

 

캐릭터는 [인원 확인] 선언을 통해 자신과 같은 위치에 있는 캐릭터를 확인할 수 있습니다. 

 

캐릭터는 [시간 조사] 선언을 통해 자신이 위치한 맵의 재화/아이템의 일부를 확률적으로 획득할 수 있습니다. 

 

 

 


 

 

 

2. 캐릭터 전투

 

같은 장소에 위치한 캐릭터는 전투 진행이 가능합니다. 이때 사용하는 키워드는 [공격] [방어] [반격] [도주] [추격]입니다.

 

 

 

 

 

이때, 캐릭터들은 자신이 소유하고 있는 아이템을 사용할 수 있습니다. 키워드는 [명령어/사용할 아이템]입니다.

 

 

 

 

 

 

 

 

사용하는 아이템은 구글 스프레드 시트 내에 기입되어 있는 데이터의 값이 반영됩니다. 

 

 

 

 

 

 

 

 

전투 진행중인 캐릭터의 체력(시간)은 구글 스프레드시트와 실시간으로 연동됩니다. 

 

 

체력 = 시간

 

 

 

 

 

이때 전투에 불리해진 캐릭터는 [도주] 시도가 가능합니다. 

 

 

 

 

 

 

 

[도주]에 성공한 캐릭터는 위치하고 있던 장소에서 2칸 거리의 랜덤한 곳으로 이동합니다. 

 

 

 

 

 

 

 

 

이때 전투 진행중이었던 상대 캐릭터는 도주한 캐릭터를 [추격]하는 것이 가능합니다. 

 

 

 

 

 

 

 

추격에 성공할 경우, 캐릭터는 추격한 캐릭터의 위치로 이동합니다. 

 

 

 

 

 


 

 

 

3. 동맹

캐릭터는 합의하에 동맹을 맺을 수 있습니다. 

 

 

 

 

 

 

 

 

이때 모든 동맹 관계의 경우 구글 스프레드 시트와 연동되어 기록됩니다.

 

 

1일 1회 동맹 요청이 가능합니다.

 

 

 

동맹 파기 혹은 거절 또한 선언을 통해 가능합니다. 

 


동맹 요청: [동맹 요청] @상대방 계정
동맹 수락: [동맹 수락]

동맹 거절: [동맹 거절]

동맹 파기: [동맹 파기]

 

 

 

 


 

 

 

4. 기타

 

캐릭터의 잔여체력(시간)이 일정 이하로 떨어질 경우, 자동으로 경고 디엠을 전송합니다. 

 

 

COMMENT
━━━━ ◇ ━━━━
COMMISSION

갠홈 커미션 - ㄹㄹ님

 

 

 

 

 

 

 

아보카도 에디션 / 디자인 및 기능 개발 전담

'COMMISSION' 카테고리의 다른 글

갠홈 커미션 - ㅎㄱ님  (0) 2021.04.14
COMMENT
━━━━ ◇ ━━━━
DEVELOPMENT

트위터 연동 2차 지인 초대장 발급 페이지

Twitter API를 이용하여 자신의 트위터 계정과 맞팔로우인 계정에게 초대장을 발급할 수 있습니다.

초대장을 발급할 수 있는 Twitter Account는 지정된 계정과의 맞팔로우 계정으로 한정합니다. 

 

 

 

 

 

 

트위터 Application을 제작, ouath 인증을 이용하여 사용자의 팔로잉/팔로워 리스트를 받습니다. 

 

 

 

 

 

발급 버튼을 누를 경우 초대장 이미지가 생성되며,

초대장에는 발급자의 아이디와 발급 대상자의 아이디, 그리고 발급 일자가 기록됩니다. 

 

 

또한 구글 스프레드시트를 DB로 이용하여 초대장을 발급함과 동시에 초대장 발급인(ID, USERNAME)과 발급대상(FRIEND_ID, FRIEND_NAME), 그리고 발급시간(TIME) 이 기록됩니다. 

COMMENT
━━━━ ◇ ━━━━
DEVELOPMENT

아보카도 에디션 - 개인홈 멤버란

COMMENT
━━━━ ◇ ━━━━
COMMISSION

갠홈 커미션 - ㅎㄱ님

아보카도 에디션 / 디자인 및 기능 개발 전담

'COMMISSION' 카테고리의 다른 글

갠홈 커미션 - ㄹㄹ님  (0) 2021.04.19
COMMENT
1 2 3