[스팀파이터] 개발 과정

안녕하세요.

어제 스팀을 조금 구매하여, 피라미가 됐습니다.

피라미!!! 행복해요~

꾸준히 스팀파이터를 개발하고 있습니다.


소개

스팀파이터는 F.LF2라는 리틀파이터 웹버젼 프로젝트를 기반으로 만들고 있습니다.

사실 게임 자체로는 유명하기도 하고, 완성도가 있다고 생각합니다.

캡처.PNG

제가 한 것은

  • .LF2 기반의 게임 시스템을 활용하고 (랜덤으로 캐릭터가 선택되고, 컴퓨터랑 싸운다.)
  • 스팀을 연동하고 (스팀 로그인, 게임 결과에 따른 보팅)
  • 이제는 추가적으로 난이도 조정을 했습니다. (이길 때마다, 컴퓨터 추가)

이제 시작입니다!!

앞으로는 PvP를 위한 개발을 진행할 것입니다.
먼저, 캐릭터 커스터마이징을 위한 개발을 진행할 것이고
다음으로는 멀티플레이를 위한 개발을 해보고자 합니다.

아래는 완료한 것과 할 것들을 적어봤어요.

완료한 것

  • 스팀커넥트 연동
  • 스팀커넥트로 보팅
  • 관리자가 댓글 달도록 한다.

  • 랭킹 시스템 - 수동 (2018.03.10)

  • 게임을 할수록 난이도 변경 (2018.03.10)
  • 맵 확장, 플레이어 초점 맞추기 (2018.03.10)

할 것

  • 홍보

    • 영어 설명 글 작성

    • 유토피안 글 작성

    • 이벤트 글 작성


  • 피드백 & 본받기

    • 다른 스팀 기반의 게임/서비스 살펴보기

    • 특징점 파악


  • UI

    • 키 설명 페이지

    • 프로젝트 설명 페이지


  • 개발 관련 내용

    • 멀티플레이어 지원

    • 캐릭터 커스터마이징


아직 안해보신분들은 한 번 해보셔요!!

스팀파이터.oa.to
steemfighter.oa.to

위의 링크를 들어가시면 게임을 해볼 수 있습니다.

키는 wsad tyu입니다.

스팀으로 로그인을 한 후, 게임을 하시면

랭킹 안에 포함이 되시고,

주기적으로 랭킹 발표에서 보실 수 있습니다.

또한, @steemfighter로 주기적인 이벤트를 진행할 예정입니다.

많은 관심 부탁드려요~~

감사합니다.


This page is synchronized from the post: ‘[스팀파이터] 개발 과정’

[이벤트 결과 발표] 스팀 기반 격투 게임 "스팀파이터"

안녕하세요.

스팀파이터입니다.

지난 번에 아래 글을 통해 이벤트를 진행했습니다.

https://busy.org/@jacobyu/7

약소한 상금 7SBD를 걸고 했었는데요.

승률이 높은 순으로 5등까지 상금을 드리기로 했습니다!

image.png

결과

유저
승률
횟수
@ryh0505
100%
34
@j-data
94%
135
@sampling
93%
33
@danbain
85%
7
@jacobyu
76%
13
@backjungmin
66%
3

여러 버그, 오류가 있음에도..
이렇게 많이 게임을 해주셔서 너무 감사합니다.

@ryh0505 승률이 100%임에 놀랍습니다.
@j-data님 135판이나 해주셔서 너무 감사합니다.
@sampling님 2판을 지시다니! 아쉽군요. 많은 코멘트 및 버그를 찾아주셔서 감사합니다.
@danbain님 참여해주셔서 감사하고 코멘트도 감사합니다.
@backjungmin님도 정말 감사드립니다!!

5분에게는 약속한 상금을 보내드릴게요.

image.png

image.png

분석 및 유저들의 코멘트

  • 게임결과를 @steemfighter가 자신의 최신글에 작성하도록 하였다.
    그랬더니 총 179개의 댓글이 달렸다 ㅋㅋ

  • [Issue] 게임에 참여하면 최신글에 보팅을 하도록 하였는데,
    총 6명이 참여하였는데, 보팅이 4개만 찍혀있다. 가끔 오류가 있는듯 하다.

  • [Issue] 게임 결과가 제대로 반영이 안된다고도 한다. 확인 필요.

  • 컴퓨터 대전의 경우, 승률로 상금을 거는것 보다는 난이도를 조정하여,
    몇단계까지 깼는지로 하는게 좋아보인다.
    추후, 배틀모드를 개발한다면 승률로 랭킹을 만드는 것도 나쁘지 않다.

  • [Issue] 가끔 게임이 멈춘다.

  • [Issue] 컴퓨터랑 같은 캐릭일 경우, 내가 누군지 모르겠다. –> 비교가능하도록 한다.

  • Bandwith 문제가 있을 줄은 알았는데 생겨버렸다!!

image.png

  • 생각보다 참여율이 저조하다. 왜그럴까?

참여하신분들 정말 감사드리고,
@j-data님은 저보다 게임을 많이하셔서.. ㅋㅋㅋ 오셔서 많은 조언 부탁드립니다.

추후 계획

  • 이벤트 기획 및 꾸준히 하기
  • 여러 문제점 해결
  • 컴퓨터 난이도 상승
  • 맵 추가
  • 캐릭터 커스터마이징
  • 배틀 시스템

앞으로도 꾸준히 서비스를 개발할 예정이며,

종종 이벤트도 하겠습니다.

많은 관심 부탁드리고, 감사합니다.
스팀파이터.oa.to

관련 글


This page is synchronized from the post: ‘[이벤트 결과 발표] 스팀 기반 격투 게임 “스팀파이터” ‘

[Research] 지역 경로 계획 소개, teb local planner

오랜만에 로봇 관련 글을 작성합니다.

저도 공부할겸 작성중입니다.

모바일 로봇의 지역 경로 계획 알고리즘에 대해 소개하고자 합니다.

지역 경로 계획 (Local path planner)

Given a plan to follow and a costmap, the controller produces velocity commands to send to a mobile base.

즉,

  • 목적지
  • 목적지로 가기 위한 전역 경로
  • 주변의 정보 (ex - 쉽게 장애물이 있다)

위의 정보들이 있다고 가정합니다.

이 때, local path planner는 모바일 로봇을 목적지까지 갈 수 있도록 전진, 회전을 명령합니다.


예를 들어, 저는 코엑스에서 영화관을 가야하며 입구에 있습니다.

영화관까지 가기 위한 경로가 전역 경로 (global path)입니다.

이제 영화관까지 움직이는데, 중간중간 사람들도 있고, 갑자기 공사도 하더라고요.

그래서, 전역 경로를 따라 가지만, 사람들을 피해가는 경로도 생성합니다.

이게 바로 지역 경로 (local path)입니다.


여러 지역 경로 계획 알고리즘이 있지만,

좋은 지역 경로 계획 알고리즘 (TEB local planner)을 소개합니다.

TEB(Timed Elastic Band) local planner

> The teb_local_planner package implements a plugin to the base_local_planner of the 2D navigation stack. The underlying method called Timed Elastic Band locally optimizes the robot’s trajectory with respect to trajectory execution time, separation from obstacles and compliance with kinodynamic constraints at runtime.

TEB는 시간, 장애물, 역학적인 제약 등을 고려해서 최적의 지역 경로를 만든다! 라고 되어있습니다.

아래 사진에서 빨간 선은 A지점에서 B지점까지의 경로입니다.

장애물이 3개가 있지만, 경로에 전혀 영향을 주지 않습니다.

그래서 직선 경로를 만든 것을 볼 수 있습니다.

image.png

아래와 같이 장애물을 하나 두었더니, 장애물을 우회하는 경로를 만들었습니다.

두 경로를 만들었지만, 그 중에 더 낫다고 생각하는걸 선택하였고 그 경로가 빨간색입니다.

image.png

장애물 하나를 더 넣어봤습니다.

패스가 여러 개가 생겼는데 그 중에 가장 좋은 패스를 선택하였고

빨간 선입니다.

image.png

경로가 장애물과 가까이 있는 것 같아,

좀 더 우회할 수 있는 경로를 생성하고 싶어졌습니다.

경로를 생성하기 위한 다양한 파라미터가 있지만,

장애물과의 최소 거리 파라미터인 min_obstacle_dist를 0.5m에서 2.0m로 늘려봤습니다.

파라미터를 변경 후, 경로를 보면 장애물로부터 거리가 먼 것을 확인할 수 있습니다.

image.png

image.png

파라미터를 좀 더 파악을 하고, 실제로 써먹어볼 수 있도록 해볼 예정입니다.

참고 링크입니다.

읽어주셔서 감사합니다!

궁금한 점, 조언 등 환영합니다!


This page is synchronized from the post: ‘[Research] 지역 경로 계획 소개, teb local planner’

스팀 기반의 격투 게임, 이벤트, 상금 총 7스달

스팀파이터 이벤트!

안녕하세요.

스팀파이터라고 아시나요? 여러번 글을 작성하였는데

홍보 겸 이벤트를 하고 싶어 이 글을 작성합니다.

image.png

제가 개발중인 스팀 기반의 격투 게임입니다.

F. LF라는 오픈소스 프로젝트를 기반으로,

여기에 스팀을 연동시켰습니다.

추가적인 개발 계획은 아래 링크를 참고하셔요.

https://busy.org/kr-dev/@jacobyu/steem

https://busy.org/@jacobyu/steem-beta

동기 및 목표

크립토키티라는 이더리움 기반으로 하는
고양이 키우기 게임을 알게되었습니다.

스팀 기반의 게임이 있으면 좋겠다 생각하여 시작하였습니다.

스팀파이터는 스팀 기반의 웹게임입니다.
이 게임을 통해 여러가지를 기대하고 있습니다.

  • 누구든 편하게 접속
  • 스팀잇 유저들간의 소통 확대
  • 성공적인 서비스
  • 스팀 가격상승!!!!!!!!!

이벤트 방법

이벤트 참여 방법은 정말 간단한데요.
게임을 참여하면됩니다.

  1. 스팀파이터 가즈아~ 링크를 누른다.
    스팀파이터.oa.to
    steemfighter.oa.to
    steemfighters.com

  2. 스팀커넥트2로 로그인을 한다.

  3. 게임을 시작한다.
    컴퓨터 1명과 싸운다.

  4. 컴퓨터를 쓰러트린다.
    컴퓨터에게 이기면 @steemfighter의 최신 글에 1퍼 보팅을 하게됩니다.
    진다면, steemfighter에게 5퍼 보팅을 하게됩니다.
    (여러번 하더라도 최신 글에 한번만 보팅하게됩니다.)


게임 조작 키는
wasd tyu (t : ATK, y : JMP, u : DEF)입니다.

기술은

  • u + d + t (D + -> + A)
  • u + w + t (D + 윗방향 + A)
  • u + d + y (D + -> + J)
  • 여러가지가 있습니다.

2018.03.08 (목) 저녁 11시까지
승률이 높은 순으로 순위를 매길 예정이며,
5등까지 상금을 드리겠습니다!

1등 : 2.5SBD
2등 : 1.5SBD
3등 : 1.0SBD
4등 : 0.5SBD
5등 : 0.5SBD

상금이 조금 적지만 ㅜㅜ

많이 참여해주시면 좋겠습니다.

궁금한게 있으시면 댓글 남겨주세요.
감사합니다.


This page is synchronized from the post: ‘스팀 기반의 격투 게임, 이벤트, 상금 총 7스달’

스팀커넥트2를 활용한 보팅 및 댓글 작성

안녕하세요. 제이콥입니다.

@morning님이 아래 두 강좌를 해주셨는데요.

너무나 설명도 잘해주시고, 예제 코드까지 포함되어있어서

쉽게 스팀커넥트를 연동해볼 수 있었습니다.

스팀커넥트2 강좌 :: 개발환경 설정, 스팀 아이디로 로그인하기 버튼 만들기

스팀커넥트2 강좌 :: OAuth Redirect 후 처리, 로그아웃

이어서 제가 스팀커넥트를 활용해서 보팅과 댓글달기를 했는데요.

두 가지 기능을 구현하기 위한 과정을 간단히 소개해드리겠습니다.


스팀파이터에 스팀커넥트 연동!

저도 위 2개의 강좌를 보고 현재 개발중인 서비스에 적용을 해봤습니다.

제 서비스에서 스팀계정이 필요한 기능으로는 아래 두가지입니다.

  • 특정 유저에 최신 글에 보팅하기
  • 특정 유저에 최신 글에 댓글달기

이를 위해서 필요한 코드는 아래와 같습니다.

특정 유저의 최신 글 가져오기


https://v2.steemconnect.com/docs/steemjs#api/get_blog_entries

위의 링크를 들어가면 steemjs에서 제공하는 여러 함수들을 볼 수 있으며,
직접 테스트도 해볼 수 있습니다.

author - 보고싶은작가 entriyId - 몇번글까지에서 검색할 것인가? ( ex - 100으로 한다면, 100부터 99,98 순으로 검색한다.)
* limit - 최신글 몇개를 검색할 것인가?

https://api.steemjs.com/get_blog_entries?account=jacobyu&entryId=9999&limit=5

steem.api.getBlogEntries(author, 9999, 10, function(err, data)
{
console.log(err, data);
});


스팀커넥트 객체 생성


스팀커넥트로 여러 작업을 하기 위해서는

먼저 스팀커넥트로 로그인을 해야합니다.

이 경우는 모닝님의 강좌를 보시면 됩니다.

var sc2worker= sc2.Initialize({
app: ‘busy’,
callbackURL: ‘http://localhost:8000/demo/‘,
accessToken: ‘access_token’,
scope: [‘vote’, ‘comment’]
});


위의 코드를 보면 로그인을 할 경우 위와 같이
sc2worker 객체를 얻을 수 있습니다.

보팅하기

위에서 만든 sc2worker 객체를 이용해서

보팅을 하겠습니다.

sc2worker.vote(user, author, permlink, weight, function (err, res) {
    console.log(err, res)
});
  • user - 보팅을 하고자 하는 사람
  • author - 보팅을 받는 작가
  • permlink - 작가의 permlink
  • weight - 몇퍼센트로 보팅할 것인가? 10000이 100퍼센트이다.

ex) https://busy.org/@jacobyu/4loogd
여기서 author는 jacobyu이며, permlink는 4loogd입니다.

댓글달기


위에서 만든 sc2worker 객체를 이용해서

댓글을 달겠습니다.

var permlink = 're-' + authorPermlink+ '-' + Math.floor(Date.now() / 1000);
var jsonMetadata =
{
  "tags": ['steemfighter']
};
sc2worker.comment(author,authorPermlink, user, permlink, '', text, jsonMetadata, function (err, res) {
console.log(err, res)
});

여기서

  • author - 댓글을 받을 작가
  • authorPermlink - 댓글을 받을 author의 포스팅 permlink
  • user - 댓글을 쓸 사람 (steemconnect2로 로그인 한 사람)
  • permlink - 댓글의 permlink, 이경우는 위의 코드처럼 자동으로 생성한다.
  • “” - 비어 있는 부분은 제목인데, 댓글일 경우 비어놓는다.
  • text - 댓글의 내용
  • jsonMetadata - 여러 설정, 댓글의 경우 태그만 해도되는 것 같다.
    필자의 경우, ‘steemfighter’로 하였다.

전체 코드


각각의 부분에 대해 설명을 드렸는데 전체 코드를 보도록 하겠습니다.

저는 한번만 로그인하고, 스팀커넥트 객체를 잘 활용하기 위해

sc2wrapper라는 클래스를 만들었고, 소스가 길어 깃헙링크를 올립니다.

https://github.com/passionbull/F.LF/blob/world/world/steem/sc2wrapper.js

그리고 html에서는 아래와 같이 호출합니다.

<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  </head>
  <body>
    <h1>SteemConnect2 Tutorial</h1>
    <a href="#" class="login">Login with Steem</a>
    <a href="#" class="logout">Logout</a>
    <script src="https://cdn.steemjs.com/lib/latest/steem.min.js"></script>
    <script src="jquery.min.js"></script>
    <script src="sc2.min.js"></script>
    <script src="sc2wrapper.js"></script>
    <script>
      var sc2 = new SC2wrapper();
      sc2.getUser();
      sc2.voteLatestPost('jacobyu',1000);
      sc2.commentLatestPost('jacobyu','스팀커텍트를 이용하여 작성하였다!');
    </script>
  </body>
</html>

결과물 1

위와 같이 작성한 테스트 코드를 동작시키면

아래 이미지 처럼,

제가 작성한 최신글에 보팅과 댓글을 단 것을 확인할 수 있습니다.

캡처12.PNG
캡처11.PNG
캡처13.PNG

결과물 2

아래 사진은 제가 개발중인 프로젝트!

스팀파이터 프로젝트

스팀커넥트2를 적용한 것입니다.

image.png


결론

스팀커텍트2를 활용하여 보팅과 댓글을 작성해봤습니다.

모닝님이 작성하신 강좌들처럼 쉽게 적어보고 싶었는데

글 작성하는게 어렵네요.

궁금하신게 있다면 댓글 남겨주세요.

감사합니다.


This page is synchronized from the post: ‘스팀커넥트2를 활용한 보팅 및 댓글 작성’

[영화] 레드 스패로, 욕구의 퍼즐

196324_166174_3350.jpg

오늘 조조 영화로 레드 스패로 (Red sparrow)를 봤습니다.

붉은 참새!

영화 주인공 도미니카 (제니퍼 로렌스)는 러시아에서 알아주는 발레리노였다가 스파이가 되게됩니다. 도미니카는 원해서 스파이가 된게 아니라 불가피하게 되었고 이를 그만하고 싶습니다.

스파이 학교를 가게 되는데 거기서 사감은 이런 말을 합니다.

인간은 욕구의 퍼즐이지. 빠진 조각을 간파해 그 조각이 돼주면 너희에게 무엇이든 줄 것이다.

이 말이 인상이 깊었고 주인공 도미니카는
본능적으로 사람들이 원하는 것을 아는 재능이 있습니다.

시작부터 끝까지 도미니카는 여러 사람들의 욕구를 알고
이용하고, 욕구를 만족시키는 것으로 스파이 일을 하게됩니다.

영화는 보는 사람들에게 긴장을 늦추지 않게 하였고,
재밌었습니다.

사람의 욕구를 파악하는 것
원하는 것을 파악하는 것
어떤 훈련을 받아야 하는걸까요?

단순히 스파이에게만 필요한 능력이 아니지
살아가는 모든 사람들에게 필요한 능력이지
생각을 하게 됩니다.

재밌는 영화였습니다.


This page is synchronized from the post: ‘[영화] 레드 스패로, 욕구의 퍼즐’

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×