이전 글 : https://xetown.com/topics/1457624 

 

본 소스는 이전 글에서 설명드렸던, 가입된 회원의 포인트를 소모하여 게임을 시작하고 획득한 점수에 따라서 포인트를 획득하는 방식의 퍼즐 게임입니다. 게임 자체는 애니팡 방식입니다. 한때 전국민이 애니팡에 심취했던 시절이 있어서 그런지 생각보다 유저분들 선호도가 높았습니다. 기능을 말씀드리면...

 

   1) 회원제 로그인 기반, 게임 시작시 멤버 포인트 차감.

   2) 이용자는 주어진 시간동안 게임을 플레이하고, 마지막에 획득한 점수에 따라서 10점당 1점 멤버 포인트로 환산받을 수 있음. 즉, 실력과 시간만 있으면 포인트 벌이로 사용가능.

   3) 랭킹제도 존재, 사용자의 점수는 랭킹에 등록되고, 1-10위까지 내림순차로 등급제를 보여줌.

   4) PC, 모바일 동시호환. (IOS 사파리, 크롬, 익스, 오페라 등 다수 브라우저 호환 가능하도록 수정)

 

더 자세한 내용은 폴더 내 "readme.txt"를 참고해주세요.

 

[주의사항]

1. 오픈소스이니 만큼 상업적인 용도로 사용하지 않으셨으면 합니다. 이 점은 readme.txt에도 강조한 부분이니 반드시 지켜주시기 바랍니다.

 

2. 게임 내 주요 이미지를 readme.txt에 어떤것인지 언급되어 있으며, 가급적이면 디자인을 바꿔서 사용해주시기 바랍니다.

 

[설치방법]

1. 압축해제한 seedcrush폴더를 /modules/아래에 copy.

2. 관리자 화면으로 들어가 "DB생성하기" 확인.

3. https://본인 사이트/modules/seedcrush/game_engine/ 으로 접속가능. (단, 로그인을 하셔야 합니다.)

 

seed.png

 

seed2.png

 

seed3.png

Atachment
첨부
  • profile
    https://본인 사이트/modules/seedcrush/game_engine/
    게임 접속 경로가 굉장히 독특하네요.

    modules 경로로 접속하는 경우는 없는데요.

    보통은
    https://본인 사이트/game_engine/ 이렇게 혹은 아예 새로운 mid 를 지정할 수 있게 하는게 일반적인데요.
  • profile profile
    모듈개발은 해본적이 없고 DB구성만 자동으로 할 수 있게 만든거라, 기본적인 설정은 배제하고 바로 공개했습니다.
  • profile profile
    이거 어떻게 설정하나 찾아봤는데 모듈화 구성을 공부하지 않으면 잘 모르겠네요. 다른분들이 개발하는걸 기대할게요.
  • profile profile
    네. 모듈화 해서 화면에 보여주는 것 까지 구현하려면 제법 오랜 시간 파봐야 할 것 같아요. 이정도 소스 공개를 목표로 하신거니 모듈화 해주실 분이 계신다면 업그레이드 되겠죠. 좋은 자료 공개 감사합니다.
  • profile
    우와 게임이 재밌네요. 초조함이 막 생깁니다.
    잘 사용하겠습니다. 감사합니다.
  • profile
    감사합니다!!
  • profile
    우와!! 이거 진짜 대박자료네요 ㅎ 감사합니다.
  • profile
    레이아웃은 어떻게 적용할 수 있을까요? ㅎ
    설정하는 부분이 하나도 없네요.
  • profile profile
    모듈화는 하나도 안되어 있습니다. 구성만 모듈이지 실제 seedcrush모듈에서 하는일은 랭크 DB만 생성하는 겁니다. 설정에 대한 편의성도 전혀없어 다른 개발자분들이 XE나 라이믹스에 맞게 모듈화로 제작하셔야 합니다.
  • profile profile
    아 넵.. 다른 방법으로 홈페이지에 넣어 사용하겠습니다.
    감사합니다.
  • ?
    우와 너무 재밌게 잘 했습니다. 레이아웃에 적용할 수 있으면 대박이겠네요. 감사합니다.
  • profile
    좋은 자료 공개해주셔서 감사합니다 !!
  • profile
    방금 해봤는데 재밌네요 ㅎㅎ 음악도 좋구요.

    하나만 아쉬운게 있는데요.

    게임이 끝난 후 기록은 잘 나옵니다.

    그런데 첫 화면에서 RANK를 누르면 등록된 점수가 없습니다 라고 뜹니다.

    어떻게 하면 좋을까요?
  • profile ?
    관리메뉴 들어가서 DB 생성해보세요.
  • ? profile
    설치한 후 바로 DB 생성했습니다.

    DB는 생성이 잘 된 것 같습니다. 게임 끝난 후에는 기록이 나오거든요.
  • profile ?
    새로고침이나 그런걸 해봐야겠는데요? 저는 DB 생성 이후에 RANK잘 표시됩니다..
    로그인은 하셨는지요?
  • ? profile
    보니깐 XE와 라이믹스의 DB가 달라서 그렇네요.

    XE는 DB 테이블이 xe로 시작하고 , 라이믹스는 rx이니 안되는게 당연한거였습니다.

    수정해주니 잘 나오네요!
  • ?
    근데 저 관리자인데 포인트 차감은 안되고 획득만 되네요?? 관리자는 원래 이런가요?
  • ?
    다른 아이디로 해도 첫 시작 시 포인트 차감은 안되네요..ㅠㅠ
  • ? profile
    이유는 모르겠으나, 힌트를 드리자면 포인트 차감부분은 point_cal.php를 호출하는 곳입니다. 해당 php파일안에 point차감, 증감을 모두 포함한 함수를 호출해요.
  • profile
    오 엄청 빨리 배포됬네요 ㅎㅎ

    혹시 이 모듈을 XE에서 정석적으로 돌아가게(?) 수정해서 재배포 해봐도 될까요?
    언제가 될진 모르지만 한번 만져보고 싶습니다
  • profile profile
    readme.txt 파일을 보니

    "본 소스는 초기 게임제작자의 이념에 따라서 오픈소스로 개방하며, 추후 XE나 라이믹스에 대한 모듈화, 기능의 확장성에 대해서는 저보다 더 나은 개발자 여러분들께 기대하는 바입니다."

    이렇게 되어 있네요 ㅎㅎ
  • profile profile
    전 그걸 원했습니다.
  • profile
    DB 테이블을 보니 rx_seedcrush_lank 만 생성이 되네요. 혹시 lank가 아니고 rank일까요?
  • profile

    아하 소스를 보니 xe_seedcrush_lank 를 쓰네요.

    라이믹스는 rx이니 그것만 바꿔주면 될 듯 합니다.

     

    /modules/seedcrush/game_engine/input_rank.php

    /modules/seedcrush/game_engine/get_rank.php

     

    위 두파일만 수정해주면 될 듯 합니다.

     

    ------

     

    이제 RANK를 누르니 잘 보이네요 ㅎㅎ

     

    그런데 게임 끝나고 보이는 랭크는 어디에 저장되는걸까요?

     

    DB에도 없는데 신기하네요.

  • profile profile
    게임끝나고 보이는 랭크는, 아마 캐쉬된 페이지에서 저장하는 것이 아닐까 싶네요. 저도 그건 메커니즘이 신기하긴했는데 큰 관심을 가지지는 않았어요 ㅎㅎ 오류부분 잡아주셔서 감사합니다.
  • profile
    아 RANK에서 저만 나오길래.. 각 id별로 최고점만 기록되는군요 ㅎㅎ
  • profile profile
    id별 최고점 등록, 한 id로 다른 점수를 얻으면 걔중 최고 점수만 등록되게만 해놨습니다.
  • ?
    오 감사합니다
  • profile
    좋은 자료 배포해주셔서 대단히 감사합니다.
  • profile
    헐, 이런 대박 자료가!!! 감사합니다!!
  • profile
    저는 배포해주신 원본 그대로 사용하는데 랭킹도 잘 나오고 다 잘됩니다.
    php 안에도 rx가 아닌 xe로 되어 있구요
  • profile
    대박자료 공개 감사합니다. 이번 주말에 적용해보고 문제 없으면 사이트에 맞게 디자인 수정 해보도록 해야겠습니다.
    어느분든 눙력과 관심있으신 분은 모듈로 만들어주시면 정말 좋을것 같습니다.
  • ?
    대박 자료입니다.
    한 가지 궁금한 게 포인트 획득 비율을 수정하려면 어디를 건드려야 할까요?
  • ? profile
    App.js를 확인해보시면 안에 연산부분이있어요. 근데 트래픽때문에 실제링크는 encode파일로변환해 사용중이니 유의하시구요. 자세한내용은 readme.txt에 있습니다
  • profile
    먼저 완전 대박 자료 감사드립니다. 그런데 포인트 관련해서, 초기 차감 포인트와 포인트 지급 비율을 조금 수정하고 싶어서 문의드립니다. App.js에서 초기 포인트 차감 문구와 포인트, 포인트 지급 비율을 수정하고 싶은데 제가 수정을 해도 적용이 되질 않습니다.ㅠㅠ

    if(confirm("2 포인트를 차감하고 시작할게요!(게임 시작 후 중도 포기시 포인트를 얻을 수 없습니다.)") == true){
    jQuery.post('./get_member_point.php', {fakeVal:0}, function( callback ){
    console.log('리턴값: ' + callback.memPoint);
    if(callback.memPoint < 2){
    alert("포인트 부족으로 실행할 수 없어요ㅠ.ㅠ");
    location.reload(true);
    return;
    } else {
    // Minus Member Point on the game
    jQuery.post('./point_cal.php', {point:2, flag:'minus'}, function( callback ){
    }, "json");

    이런 식으로 초기 포인트 차감 문구와 차감할 포인트를 수정했으며,

    var current_score = self.scoreObject.getBehavior().getValue();
    var addPoint = 0;
    if(current_score > 1000){
    addPoint = Math.round(current_score / 10000);
    }

    이렇게 지급 비율을 수정하였습니다.
    그런데 적용이 되질 않네요ㅜㅜ

    대박 자료 다시한번 더 감사드립니다. 혹시 여유있으실 때, 조언 주신다면 정말 감사하겠습니다!
  • profile profile
    수정은 제대로 하셨는데 동작을 안하는 이유는 단순합니다. 제가 readme.txt를 폴더에 넣어둔 이유는, 혹시 모를 이럴경우를 대비해서 파일에 대해 분류해서 써놨습니다.

    app.js파일로 동작하는것이 아닌, app_encode.js로 돌아가게끔 만들어놨습니다. app_encode.js는단순히 app.js의 압축파일이나, index.php를보시면 app_encode.js로 load하게끔 되어있을것입니다. 이걸 app.js로 바꾸세요.

    압축한 js파일들을 사용한 이유는 사용자 트래픽 때문이었습니다. 압축한 파일들 모두 압축시 고효율로 줄여져 트래픽에 상당한 효과를 봤기 때문입니다.
  • profile profile
    감사합니다. readme 파일을 읽어놓고도 그게 무슨 뜻인지를 몰랐네요.
    도움에 진심으로 감사합니다. 이런 자료를 공개해주셔서 정말 감사해요.
  • ?
    포인트게임 공개해 주신 덕분에 잘 사용하고 있어요.
    그런데 게임을 하면 포인트 획득은 되는데 포인트차감이 안되어서 조금 난감한데 방법이 없을까요?
    point_cal.php도 봤는데 어떻게 설정해야 하는지 잘 모르겠어요.
    라이믹스라서 포인트가 차감이 안되는건지 고언 좀 부탁드려 봅니다.
  • ? profile
    라이믹스에서는 검증해본적이 없어서 정확하지는 않지만, 제가 말씀드릴 수 있는건 app_encode.js를 불러와 point_cal.php로 jquery에 포인트값을 넣어 날려서 연산합니다. 결국, 증감모두 point_cal.php에서 연산하기에, 증가만 되고 차감이 안된다면 jquery에서 실제로 날라온 minus값이 parameter로 오는지 확인이 되어야 합니다.

    위에 쌉초보님이 올리신 코드에서 보면 이 부분이 차감하기 위해 json형태로 값을 넘기는 부분이며, point_cal.php에서 어떤 변수로 받는지 확인하시고 해당 값이 정상으로 오는지 console.log로 확인해보시기 바랍니다.

    } else {
    // Minus Member Point on the game
    jQuery.post('./point_cal.php', {point:2, flag:'minus'}, function( callback ){
    }, "json");

    * 여담이지만, 값은 정상적으로 간거같은데 point_cal에서 호출하는 멤버 포인트의 마이너스를 수행하는 방식이 XE와 라이믹스가 다를수도 있지 않나 싶습니다.
  • profile ?
    정성스런 답변 감사합니다~
    제가 xe와 라이믹스를 사용중인데,
    xe에서는 포인트차감과 획득이 잘 되는데, 라이믹스에서는 획득은 되는데 포인트차감은 안되네요..
    라이믹스 어느 부분 때문에 차감이 안되는건지 잘 모르겠네요ㅠㅠ
    어찌됐든 재밌는 게임 공유 정말 감사드려요~
  • profile
    1. 포인트 차감 함수 사용법은 XE나 라이믹스나 똑같습니다.
    2. point_cal.php를 직접 호출하면 게임을 하지 않고 공짜로 포인트를 얻을 수도 있겠군요. ㅎㅎ
    3. 상업적 이용을 허용하는 LGPL 라이선스와 상업적 이용을 금지하는 readme가 모두 포함되어 있으니 어느 쪽 장단에 맞추어 춤을 추어야 할지......
  • profile profile
    엌ㅋ LGPL이 상업적 이용 허용이었군요.. 잘못 기재했네요. 상업적 이용은 바라지 않아요.
    2번은 생각지도 못했는데 말씀들어보니 그런 헛점이 있었네요. 구조적인 부분을 이해한다면 .. 저걸 보안한다면 게임 시작시 flag를 setup하고 게임 종료시 flag를 회수하면서, 유저당 flag가 존재할 경우에만 연산되게끔 수정해야겠네요.
  • profile

    파일을 내려 받아서 디자인을 수정하고 있습니다. 집에서 작업 환경이 안되서 일단 초안을 만들었는데... 원본의 사이즈와 아이콘과 버튼의 위치등을 맞춰서 이미지만 바꾸면 되도록 하려고 합니다.
    제가 운영하는 사이트에 맞게 비행기가 주제인데...
    현재 개발되고 있는 한국형 전투기 KFX가 제목이고... 폭발하는 애니팡 아이콘은 러시아와 중국의 최신형 전투기를 사용합니다. 보통 칼라와 모양으로 구분을 하는데... 좀 난이도를 높여서 칼라보다는 기체의 모양을 보고 게임을 하도록 했습니다. 저희 회원들의 수준에 맞춰서...^^
    시간이 끝나면 아래 대륙간탄도탄...ICBM이 폭발하는 것으로.... 끝...

    실제 적용하면 어떨지는 모르겠습니다만.. 좋은 소스 올려주셔서 감사한 마음과 함께... 한번 도전해봅니다.

     

    KFX_Game.jpg

    KFX_Game2.jpg

     

  • profile profile
    디자인 너무 멋있네요! 캬~~ 다 만들어지시면 구경하러 갈께요~
  • profile profile

    디자인 시안을 회원들에게 보여줬는데... 비행기 난이도가 너무 높다고.ㅋㅋ
    아무래도 칼라풀하게 바꿔야 할 듯 싶네요.

     

    모듈로 개발할때 스킨을 첫화면에서 선택할 수 있으면 좋겠다는 생각을 해봅니다.

    DB는 같이 쓰는 것으로 하고...

  • profile profile
    비행기가 다 똑같아 보입니다. ㅋㅋ
    엄청 어렵겠는데요
  • profile profile
    색만 뚜렷하게 구별되면 참 좋은 디자인인것 같습니다.
  • profile profile
    사실 저희 회원들이 비행기 전문가들이라 그냥 스쳐도 기종을 아는 분들이라 일부러 색상죽이고 실루엣으로 한겁니다..
    초보회원들을 위한 비행기도 만들려고 하는데요.. 그래서 메뉴에 스킨 선택 기능이 있었으면 하는겁니다. 저는 그걸 만들 능력이 안되서요..ㅎㅎ
  • profile profile

    http://afbase.com/modules/seedcrush/game_engine/

     

    http://afbase.com
    ID test
    Pass 0000

    테스트 버전 올렸습니다.
    색상을 죽여서 난이도가 조금 높습니다.

    소스에 있는 이미지 크기보다 실제 게임서 영역이 작아서 다시 조절을 해야 할 것 같습니다.
    위에서 만들었던 그래픽의 영역을 잘라먹네요..
    게임 시간이 20초인것 같은데.. 시간을 JS 파일에서 늘려줘야하나요? 제가 소스를 모르는데 시간 늘리는 것을 알려주시면 감사하겠습니다. 너무 초보적인 질문이라 죄송합니다.

  • profile profile
    역시 어렵네요.. ㅎㅎㅎ
    1분도 채 못 버티고 터져버렸네요 ㅋ
  • profile profile

    쪽지로 답변 드렸습니다. 그리고 테스트 계정으로 확인해봤습니다만, 약간 문제가 있는것 같네요.
    1) 게임 시작시 포인트 차감후 게임이 시작되면 위에 사용자 포인트점수와 스코어를 읽고 0부터 표시하는데, 이 과정이 느려져서 스코어가 먼저 뜨지 않은 상태에서 게임이 시작되면, 블럭을 이동해 3개이상으로 맞춰도 터지지 않네요. 이게 제 인터넷이 느려서 그런건지, 아니면 사이트 내 회원 포인트를 읽어오는게 느려서인지 구분이 안갑니다.
    - 게임 시작후 회원 포인트점수를 늦게 가져옴 -> 스코어랑 포인트 점수가 뜨기전에 게임이 시작되고, 블럭 맞추기(3개 이상)하면 터지지 않음. 해당 스코어랑 점수가 뜨고나서야 진행됨. (시간은 화면 뜰때부터 계속 흘러감)

    2) 게임 종료 후 DB에 기록되지 않는 것 같네요. rank에 점수가 없어요. (정정)

      - rank에 점수가 없는게 아니고 늦게 뜨네요.

     

    혹시나해서 폰으로도 해봤는데 사이트에서 DB에 데이터를 읽어오는 속도가 조금 느린것 같습니다. 

  • profile profile
    맞습니다 저도 계속 테스트하는데.. DB에서 스코어를 늦게 가져오더군요. 아마 제 사이트가 느려서 그럴겁니다.
    내내 빠른서버 유지하다가 이번에 클라우드 서버 씨피유 한단계 낮췄는데 이렇게 차이날 줄 몰랐습니다. 다시 원복해야 할지 고민 중입니다.
    테스트 해주셔서 감사합니다.
  • profile profile
    사실상은 프로그램 자체도 현재 문제인게, 스코어 부르기 전까지 타이머를 기다리고 실제 불러오고 난 다음에 게임이 실행되야 하는게 맞습니다. 문제는 제가 개발할 당시에는 이런 문제가 없어서 따로 예외처리를 안했는데, 만약 해야 한다면 timer로 object를 다 읽고나서 그 다음에 실행되도록 소스를 대거 수정해야 할 것입니다. 물론, 저는 이걸 고칠생각은 없습니다.. (다른건도 할게 많아서요..)
  • profile profile
    아.. 그런 문제가 있었군요. 그런부분이 한국은 네트웍이 빨라서 문제가 되지 않을꺼라 생각했는데 서버가 느린것도 큰 원인이 될줄 몰랐습니다. 알아도 제가 딱히 어떤 방법이 있는건 아닙나다만...
    혹시 그러면 플레이 하기전 첫페이지에 처음부터 자신의 포인트를 DB에거 불어와도 그럴까요? 미리 불러오는 개념.. 그렇게 해도 플레이할때 다시 불러와야 한다면 똑 같겠지만...
    어찌 되었건 바쁘신 와중에 답변 해주시고 좋은 소스 공개 해주셔서 감사합니다
  • profile profile
    아예 플레이할때 포인트를 불러오는 부분을 삭제하는것도 괜찮을지 싶은데요. 어차피 포인트 획득 및 차감은 불러오는 포인트 수를 확인해서 업데이트하는 개념이아니니...
    // Create score text 주석으로 가보시면 Jquery로 감싸져있는데, get_member_point.php를 호출하는 형태를 삭제시키면 게임에는 지장이 없을 것 같네요. pointText부분을 정의하는 부분도 포함해서요. 결국, 저 페이지로 호출하는 포인트 값을 받기 전까지 지연되서 생긴 문제니까요.
  • profile profile
    답변 감사합니다. 일단 시간을 늘리니 앞에서 2~5초 기다리는 것은 괜찮은 듯 합니다.
    더 운용해보고 문제되면 한번 시도해보도록 하겠습니다.
    계속 하다보니 중독성 있어서 재밌네요...
  • ?
    안녕하세요? 혹시 포인트게임의 점수를 초기화하고 싶으면 어떻게 해야할까요?
    고인물들이 고득점을 해놔서 새해맞이로 초기화를 한 번 하고자 하거든요..
  • ? profile
    delete_alldata.php라는 파일을 살펴보시면 알수 있으실겁니다. 단순히 DB내용을 삭제하는 겁니다.
  • profile ?
    감사합니다!