Extending Lite 扩展Lite
Persistency is currently not covered in the SDKs we provide. None of our applications saves any data. Every game and application is different and on a high performance server solution, you probably want to control this aspect yourself.
持久性是目前没有包含在我们提供的sdk里。我们没有应用程序要保存任何数据。在高性能服务器解决方案中每个游戏和应用程序都是不同的,你可能想要控制这个方面通过你自己。
You are free to use any of the many professional solutions developed in C#. As example, take a look at:
- NHibernate : Mature, open source object-relational mapper for the .NET framework
- Membase : Distributed key-value database management system
- CSharp-SQLite : SQL database in a local file
- Lightspeed : High performance .NET domain modeling and O/R mapping framework
你可以自由的使用任何专业的基于C#的开发解决方案。例如:
- NHibernate:成熟的,开放源的对象关系映射器的
- Membase:分布式数据库键值管理系统
- CSharp-SQLite:SQL数据库在一个本地文件
- Lightspeed:高性能建模和O/R映射框架
Trigger Game-Logic In Intervals 在时间间隔触发游戏逻辑
If you want your server application to execute some logic in intervals, add this as method into LiteGame and schedule a message for the room. By using a message, the method call will be in sequence with any operations (avoiding threading issues).In the Lite Lobby Application’s LiteLobbyRoom.cs we used this code:
如果你想让你的服务器应用程序在时间间隔内执行某些逻辑,添加这个方法到LiteGame和安排房间的消息。通过使用一个消息,方法调用将带着任何操作入队 (避免线程问题)。在Lite Lobby应用程序的LiteLobbyRoom.cs中我们使用这些代码:
/// <summary>Schedules a broadcast of all changes.</summary>
private
void
SchedulePublishChanges()
{
var
message =
new
RoomMessage((
byte
)LobbyMessageCode.PublishChangeList);
this
.schedule =
this
.ScheduleMessage(message, LobbySettings.Default.LobbyUpdateIntervalMs);
}
/// <summary>Initializes a new instance of the LiteLobbyRoom class.</summary>
public
LiteLobbyRoom(
string
lobbyName)
:
base
(lobbyName)
{
this
.roomList =
new
Hashtable();
this
.changedRoomList =
new
Hashtable();
// schedule sending the change list
this
.SchedulePublishChanges();
}
/// <summary>Sends the change list to all users in the lobby and then clears it.</summary>
private
void
PublishChangeList()
{
//do something in intervals...
//schedule the next call!
this
.SchedulePublishChanges();
}
As you can see, at the end of PublishChangeList the next call is scheduled explicitly.
我们可以看到,在PublishChangeList 的最后安排了下一个调用。