Need direction to make a game like Don't Starve Multi-play

Options
seno
seno
Hello, all.

Recently, our team decided to make something similar with Don't Starve.
It' going to be a mobile game and Free2Play(How typical in South Korea).
Detailed game flows haven't finished to be designed, but for back-end, it's going to use the web-server as the main game logic server and the data server. It's going to also have the multi-play mode which can be(and haven't decided) either (or both) co-op mode or PVP mode, and this is where PUN shows up to solve the multi-play mode.

Here is video of playing Don't Starve's multi-play.
https://www.youtube.com/watch?v=2n44s9VqTSA

I hope anyone can give some direction or guide to develop such game mode.
One crucial question is, Do I need to write server code for this?

Here are requirements I figured out for the multi-play mode.

1. The room-based multi-play mode with each room has the limit of 5~6 players.

2. Provide the random match via the matchmaking to cut user setting for creating and joining rooms.

3. Players will create rooms if there are no rooms or can't pass filtering for matchmaking.

4. The room(or the multi-play) will be consist of terrain, non-moving interactive objects, pickable objects and a few AIs(such as monsters) and joined players.

5. The game will generate the world terrain in random. The room will have separate terrain than the world terrain and the room's terrain will be pre-built terrains in some numbers(say 4~6 stages) which means all players will have same terrains for the multi-play.

6. The room's terrains are pre-built, but the non-moving interactive objects(trees, plants and etc) will be randomly generated by the owner player who creates the multi-play room. The terrains will be surrounded by collider walls. Roads are the part of terrain if there are roads.

7. There are 2 ~ 3 AIs at a time, but if some of them are destroyed, new AIs can be spawned within the limit.

8. Both non-interactive and pickable object have state and some other properties those can be updated by time or player actions.

9. A player can do following actions and other players can see the actions.
9-1. Player can move.
9-2. Player can pick or drop pickable objects.
9-3. Player can interact with non-moving interactive objects and as result non-moving interactive objects can move to different states than the current state.
9-4. Player can trigger to change non-moving interactive to pickable objects(spawning new pickable objects).
9-5. Player can attack AIs.
9-6. Player can trigger to change AIs to pickable objects(spawning new pickable objects).
9-7. Player might be able to attack other players.
9-8. Player might be able to chat with other players.

10. Max number of non-interactive objects is 100(maybe more or less). Max number of pickable objects is 100(maybe little bit more or less). Total about 200 objects are in the room.

11. The room's state(time from daytime to nighttime) can be changed by time or triggers.

12. Players data will be updated to the game logic server when the players leave the room in the correct way like portal.

13. Player can leave the room anytime by entering portals or in accident.

14. Player who is suddenly disconnected will be forced to transfer to the world terrain, but when the player tries to play the multi-play mode within short time period after recovering network connection, the player should better join to the disconnected room.

Hmm.. Something like this. I will keep update if other requirements are discovered.

Any advice will be very helpful.

Thanks in advance!

Comments

  • seno
    Options
    I know how to do basic functionality like 1, 2, 3.

    I read about the traffic culling posted by M2H. I also read some posts related controlling multiple non-moving objects via one PhotonView, but I would like to know limitation for scenario like 8 and 10.
  • seno
    Options
    I found some idea of updating many objects with deterministic movement.
    http://blog.photonengine.com/2015/02/syncing-400-objects-in-clash-spaceship-commander/

    And for 11, it seems the master client should have responsibility to control the environment game logic such as changing time.