Giter VIP home page Giter VIP logo

cloudbread's Introduction

CloudBread Project

CloudBread is free OSS project for mobile game and mobile app server engine powered by cloud service.

Build status

About this project

CloudBread support features

  • Stateless RESTful API based on HTTP game server engine + real-time peer to peer communication module.
  • Built on fully managed Microsoft cloud service(PaaS) and official SDK.
  • Most of game service modules include membership, Item management, leader board, notice, Coupon & event management, Admin website, IAP, push notification and etc.
  • Support 100+ game business logic and admin website by default.

Getting Started Guide

To install CloudBread, follow this installation guide wiki document.

CloudBread developer guide and API Reference

CloudBread is supporting developer guide and API reference pages for developer. Please, visit link below.

Official discussion group and issue reporting.

About issue discussion, feature request, and bug reporting use Github issues page, please. Before you summit the issue, please search about issue first.

Contribution

CloudBread is open source and you can contribute to make it better. Please, join the Facebook group and if you want to code contribute on code, Pull Request is welcomed.

Offline meet-ups and developer camp

CloudBread team is hosting various offline activities for mobile game & app developers. The contributor team meet-up is hosted offline every week in Korean Seoul city. Also, CloudBread team is hosting hands on Developer camp biweekly in Seoul city. Do you want to join the various developer activities? Please, join Facebook discussion group.

Contributors

Dae Woo Kim YoonSeok Hong JungHyun Kim BaHwan Han Suseon LeeJuYeol Yoon

License

  • This project released under the MIT license.
  • CloudBread project is not responsible for software that damages or corrupts your service. This website is a guide to Open Source Software. Although we test applications we cannot guarantee their safe use. Download and use the programs at your own risk.
  • This open source software is CloudBread team project and this is not associated with company or organization.

CloudBread 프로젝트는

CloudBread는 클라우드 기반 무료 오픈소스 프로젝트로, 모바일 게임과 모바일 앱에 최적화된 게임 서버 엔진 프로젝트 입니다.

이 프로젝트에 대해

  • HTTP RESTful API 기반 게임 서버 엔진과 Peer간 커뮤니케이션을 위한 모듈을 제공
  • 관리되는 마이크로소프트 클라우드 서비스 구성요소들을 이용해 개발 되었고, Microsoft가 공식 제공하는 Client SDK를 사용해 개발
  • 대부분의 게임에서 사용되는 회원관리, 아이템관리, 랭킹모듈, 공지사항 처리, 쿠폰 및 이벤트 관리와 관리자 페이지, 앱내구매 기록 처리와 푸쉬 알림 서비스 등의 기능을 제공
  • 100여개 이상의 게임 비즈니스 로직과 관리자 화면을 기본 제공

프로젝트 설치 가이드

CloudBread 프로젝트를 설치하기 위해서는 설치 가이드 위키 문서를 참조하세요.

CloudBread 개발자 가이드와 API 참조 문서

CloudBread 프로젝트는 개발자 가이드와 API 참조 문서 페이지를 제공하고 있습니다. 아래 링크에서 개발자 가이드와 API 참조 문서를 보실 수 있습니다.

공식 개발자 그룹과 이슈 처리 절차

CloudBread와 관련된 이슈, 기능추가 및 변경, 버그 리포팅은 공식 **Github issues**에 올려 주세요. 이슈를 올리시기 전에 관련 이슈가 없었는지 검색을 먼저 해보시길 부탁 드립니다.

프로젝트 참여와 공헌

CloudBread는 오픈소스 프로젝트로, 누구나 참여 가능합니다. 페이스북 개발자 그룹에 방문해 컨택 하실 수 있으며, 코드에 대한 참여와 공헌을 위해서 Pull Request를 해주시면 됩니다.

오프라인 개발자 밋업과 개발자 캠프

CloudBread 프로젝트 팀은 다양한 오프라인 행사를 모바일 게임 개발자 대상으로 주최하고 있습니다. 현재, Contributor 팀은 주 1회 정기 모임을 진행해 프로젝트 확장과 안정성 제공을 상의하고 프로젝트에 공헌 하고 있으며, 2주에 한번 간격으로 개발자 대상 오프라인 캠프를 진행하고 있습니다. 다양한 오프라인 행사에 참여를 원하시면 페이스북 그룹을 방문해 주세요.

Contributors

Dae Woo Kim YoonSeok Hong JungHyun Kim BaHwan Han Suseon Lee JuYeol Yoon

License

  • This project released under the MIT license.
  • CloudBread project is not responsible for software that damages or corrupts your service. This website is a guide to Open Source Software. Although we test applications we cannot guarantee their safe use. Download and use the programs at your own risk.
  • This open source software is CloudBread team project and this is not associated with company or organization.

cloudbread's People

Contributors

bryant1410 avatar cloudbreadpapa avatar ellemedit avatar finesunday avatar junghyun4425 avatar style0912 avatar yshong93 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cloudbread's Issues

update CloudBread-DB-Install-Script Readme file

change installation guide from

  1. install-with-sample.bat.bat
    Install all database objects , stored procedures and sample data.
    install-CloudBreadDB-object-create.bat SQLSERVER USERID PASSWORD DATABASE

TO
2) install-with-sample.bat
Install all database objects , stored procedures and sample data.
install-with-sample.bat SQLSERVER USERID PASSWORD DATABASE

Make database - rank

CB does have redis rank modue, but got request of database - rank.
It could cause performance issue.

working on it

Need of English installation guide

Hi folks :)
I'm newbie to this project.

When I try to install CloudBread, I found that there is no installation guide written in English.
I think that English documentation is crucial to get interest from people but Korean.

[Suggestion] Better URL Routes

Hi. I'm developer signed up CB camp. I guess CloudBread's RESTful API routes can be improved for better immediacy. Let me suggest below.

API Route Rule

CRUD

API to create, read, update and delete resources.

Find Resources

Method: GET

/v3/:resources
/v3/:resources/:resourceID
/v3/:resources/:resourceID/:children
/v3/:resources/:resourceID/:children/:childID

Create Resource

Method: POST

/v3/:resources
/v3/:resources/:resourceID/:children

Update Resources

Method: PUT, PATCH (PUT is dominating but PATCH is also nice)

/v3/:resources
/v3/:resources/resourceID
/v3/:resources/:resourceID/:children
/v3/:resources/:resourceID/:children/:childID

Delete Resources

Method: DELETE

/v3/:resources
/v3/:resources/:resourceID
/v3/:resources/:resourceID/:children
/v3/:resources/:resourceID/:children/:childID

Conditions

Sometimes, requestements need conditions such as sorting, limiting, skipping and filtering resources.

Skipping

{
  "skip": 40,
  "skip": 140
}

Limiting

{
  "limit": 30,
  "limit": 10
}

Sorting

{
  "sort": "createdAt desc",
  "sort": "username asc, updatedAt desc",
  "sort": {
    "field": "createdAt",
    "method": "desc"
  },
  "sort": [
    {
      "field": "username",
      "method": "asc"
    }, {
      "field": "updatedAt",
      "method": "desc"
    }
  ],
  "sort": [
    "username asc",
    "updatedAt desc"
  ]
}

Filtering

{
  "where": [
    {
      "field": "balance",
      "operator": ">",
      "value": 4000
    }, {
      "field": "level",
      "operator": "<",
      "value": 20
    }, {
      "field": "username",
      "operator": "contain",
      "value": "BlahBlah"
    }
  ],
  "where": {
    "balance": {
      "operator": ">",
      "value": 4000
    },
    "level": {
      "operator": "<",
      "value": 20
    },
    "username": {
      "operator": "contain",
      "value": "BlahBlah"
    }
  },
  "where": {
    "balance": [">", 4000],
    "level": ["<", 20],
    "username": ["contain", "BlahBlah"]
  }
}

Replacement Examples

/api/CBComSelMember => /v3/members/:memberID
/api/CBComUdtItemList1 => /v3/members/:memberID/items1
/api/CBSelGiftItemToMe => /v3/members/:memberID/gifts

Thank you!

Coupon module biz logic problem

In coupon logic does not work as usual coupon business.

  • CBSelCoupons will be deplicate
  • (TODO)In Admin Web, will add massive coupon adding page
  • To genenrate massive coupons, process it SQL Query until Admin Web implementatoin.

Action plan

  1. CBSelCoupons 에 비즈니스 로직 오류. 이벤트와 같은 동작을 하며 쿠폰 로직은 완전히 다름.
  2. 대량 쿠폰 생성을 현재는 SQL 쿼리로 해야함. 단일 쿼리는 구 관리자 페이지에서 제공.
    (TODO) 신 관리자 페이지에서 쿠폰 대량 생성 및 Excel로 다운로드 기능 필요.
  3. 대량 쿠폰을 생성 후 쿠폰 push 대행 업체 등(쿠폰을 push로 보내거나 예약 설치자 대상 알림 전달, 마케팅 등)에 보내기 위한 excel 문서로 export 하는 방안은 SQL Server Management Studio를 이용하는 방안 제공
  4. 쿠폰이 현재는 item을 보내는 로직만 존재(MemberItem)하나, 게임 속성를 올리기 위한 부분에 처리 필요 (gameinfo의 값을 업데이트)

CBToolEditor.cs GetClassTextFile function error

https://github.com/CloudBreadProject/CloudBread-Unity-SDK
I try this but failed and error.

error code

NullReferenceException: Object reference not set to an instance of an object
CloudBread.CBToolEditor.GetClassTextFile (System.String fileName_) (at Assets/CloudBread/Editor/CBToolEditor.cs:14)
CloudBread.CBPostman.MakeStructFromJson (System.String structName_, System.String structType_, System.String jsonText_) (at Assets/CloudBread/Editor/CBPostman.cs:318)
CloudBread.CBPostman.GenerateStruct (System.String postData_, System.String header_) (at Assets/CloudBread/Editor/CBPostman.cs:287)
CloudBread.CBPostman.DrawBodyRight () (at Assets/CloudBread/Editor/CBPostman.cs:207)
CloudBread.CBPostman.DrawBody () (at Assets/CloudBread/Editor/CBPostman.cs:70)
CloudBread.CBPostman.OnGUI () (at Assets/CloudBread/Editor/CBPostman.cs:34)
System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:222)
Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.
System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:232)
System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MethodBase.cs:115)
UnityEditor.HostView.Invoke (System.String methodName, System.Object obj) (at C:/buildslave/unity/build/Editor/Mono/HostView.cs:285)
UnityEditor.HostView.Invoke (System.String methodName) (at C:/buildslave/unity/build/Editor/Mono/HostView.cs:278)
UnityEditor.HostView.InvokeOnGUI (Rect onGUIPosition) (at

bug : No connection is available to service this operation: ZREVRANK cbrank

error messgae information :
"message": "An error has occurred.",
"exceptionMessage": "No connection is available to service this operation: ZREVRANK cbrank",

root cause :
couple cloudbread redis sorted set function does not release client connection

resolution :
added disponse() method explicitly on CBRedis.cs file

full error message :
"message": "An error has occurred.",
"exceptionMessage": "No connection is available to service this operation: ZREVRANK cbrank",
"exceptionType": "StackExchange.Redis.RedisConnectionException",
"stackTrace": " at StackExchange.Redis.ConnectionMultiplexer.ExecuteSyncImpl[T](Message message, ResultProcessor1 processor, ServerEndPoint server)\r\n at StackExchange.Redis.RedisBase.ExecuteSync[T](Message message, ResultProcessor1 processor, ServerEndPoint server)\r\n at StackExchange.Redis.RedisDatabase.SortedSetRank(RedisKey key, RedisValue member, Order order, CommandFlags flags)\r\n at CloudBreadRedis.CBRedis.GetSortedSetRank(String sid)\r\n at CloudBread.Controllers.CBRankController.Get(String sid)\r\n at lambda_method(Closure , Object , Object[] )\r\n at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass10.b__9(Object instance, Object[] methodParameters)\r\n at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments)\r\n at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)\r\n— End of stack trace from previous location where exception was thrown —\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ApiControllerActionInvoker.d__0.MoveNext()\r\n— End of stack trace from previous location where exception was thrown —\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.d__5.MoveNext()\r\n— End of stack trace from previous location where exception was thrown —\r\n at System.Web.Http.Filters.ActionFilterAttribute.d__5.MoveNext()\r\n— End of stack trace from previous location where exception was thrown —\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.d__0.MoveNext()\r\n— End of stack trace from previous location where exception was thrown —\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext()\r\n— End of stack trace from previous location where exception was thrown —\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.d__1.MoveNext()"
}

API for external game related marketing service

Support for game module(notice, event, coupon...) proxy agent communication API.

게임 모듈(공지사항, 이벤트, 쿠폰)과 같은 대행 업체와 연동을 위한 API 요청

국내를 예를 들면, NHN 토스트클라우드 또는 IGAWorks 서비스와 연동을 위한 API 추가 지원 요청

cloudbread unity sdk generate error

[http://xxxxxxxxxx.azurewebsites.net/api/CBInsRegMember] - 500 Internal Server Error
UnityEngine.Debug:LogWarning(Object)
CloudBread.CBPostman:DirectWWW(WWW, Action1) (at Assets/CloudBread/Editor/CBPostman.cs:460) CloudBread.CBPostman:RequestPostmanTest(String, String, String, Action1) (at Assets/CloudBread/Editor/CBPostman.cs:422)
CloudBread.CBPostman:DrawBodyRight() (at Assets/CloudBread/Editor/CBPostman.cs:212)
CloudBread.CBPostman:DrawBody() (at Assets/CloudBread/Editor/CBPostman.cs:70)
CloudBread.CBPostman:OnGUI() (at Assets/CloudBread/Editor/CBPostman.cs:34)
UnityEditor.DockArea:OnGUI()

라고 뜨면서 프로토콜 폴더에 C# 스크립트가 생성되지 않습니다.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.