-
Notifications
You must be signed in to change notification settings - Fork 0
Objects API (Draft)
Justin edited this page Apr 9, 2014
·
5 revisions
Player별 정보를 기록하는 API는 V3기준으로 Item과 UserData가 있다. 그런데, 다음의 문제점이 있다.
- Item이라는 이름 때문에, Item에는 게임내의 아이템을 넣어야 한다는 선입견이 있다.
- Item은 일종의 singleton이기 때문에, instance 개념으로 클라이언트가 디자인될 때 제약이 생긴다. 예를 들어, 최근 모바일 게임의 '강화', '합성'의 구현이 어렵다
- UserData와 Item이 분리되어 있어서, item_changes나 condition등에서 서로의 값을 참조할 수가 없도록 되어 있다.
- Farm류 게임에서 일정 시간뒤에 아이템이 변경되는 것들을 안전하게(hacking-safe) 처리하기가 어렵다. (ex: Clash of Clans 에서 GoldMine 업그레이드시 1시간 후에 처리가 되어야 함)
Player별 정보를 저장하는 Object라는 새로운 개념을 만든다. Item과 UserData는 모두 deprecate 시킨다.
Object는 기본적으로 다음 field를 가진다.
| Name | Type | Description |
|---|---|---|
| id | Number | ID. 서버에서 generate한다. |
| class | String | Object의 class이름 |
| value | String | value |
| value_type | String | String, Number, Boolean 중 하나 |
| locked | Option[Boolean] | lock 여부 |
| future | Array of JSON Object | TBD |
- Get을 할때, 기본적으로 id로 얻어온다.
- class로도 얻어오는 걸 허용한다. 그러나 class로 여러개의 instance가 존재하는 경우 error 처리한다.
- UserData처럼 Set을 할 수 있는 API 제공한다.
- 만약 class 레벨에서 Set에 제한이 걸린경우 Set API 호출시 error 처리한다. 여기에 대해서는 ClassDescriptor 참고
- Item에서와 마찬가지로 Mission, IAP Conversion, Round와 연동 한다.
- ItemConversion의 대응 버전
- 위의 field외에 client에서 추가하는 custom field를 가질 수도 있다.
- custom field의 type은 모두 string이다.
- default 값 세팅은 ClassDescriptor를 이용한다.
이전에 ItemProperty가 하는 기능에 더해서, Object에 제약 사항들을 정의한다. Object에 따라서 만들 수도 있고, 안만들 수도 있다.
| Name | Type | Description | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| class | String | Object의 class이름 | |||||||||
| comment | String | 사용자가 참고하기 적어놓는 것. API 동작과 무관 | |||||||||
| value_type | Option[String] | value type을 지정. 지정 안하면, client가 정하는 대로 쓸 수 있음 | |||||||||
| value | Option[String] | default로 쓰이는 값 | |||||||||
| locked | Option[Boolean] | lock 여부 | |||||||||
| deny_update | Array of JSON Object |
|
|||||||||
| recharges_in_sec | Option[Number] | recharge 주기. value_type이 'Number'이어야 함 | |||||||||
| max_recharged_value | Option[Number] | recharge로 max가 될 수 있는 value 값 | |||||||||
| fields | JSON Objects | custom field의 default 값들. JSON Object의 key와 value 모두 string |
기존 데이터 migration. 2~3일 작업 분량 정도 되지 않을까 생각중. 그리고, migration이 제대로 안될 가능성도 있다.
#####2. DB, API서버, Partner 모두 분리 파닥파닥베이비런과 비트몬스터를 위해 그냥 놔두고, v4부터 다른 도메인을 이용한다.