Lựa chọn giao thức cho game idle/simulator: Websocket hay HTTP hay cả hai?
Em đang làm một game dạng idle/simulator/defense - thể loại SPRG.
<p>
</p>
<p>
Game mechanic là xếp formation một lượng character cho trước vào grid[row,column] tương ứng. Sau khi có được dữ liệu formation,
</p>
<p>
Lựa chọn đối thủ (có formation) và nhấn Tấn công. (xếp đội hình trước hoặc sau match tùy trường hợp - hoặc vào ranking thấy formation của đối
Không serialize được list ở C<h1>client sdk</h1>
Em trả về 1 <code>List</code> ở server. Nhưng khi gọi <code>List roomIdList = data.get(0).toList();</code> ở client thì báo lỗi không cast được. Cụ thể ở hàm <code>toList</code> :
<p>
</p>
<pre>
public List toList()
{
List answer = new List();
foreach (Object item in list)
{
answer.Add((T)item);
}
return answer;
}
</pre>
Làm sao add lobby room vào globalRoomManager khi khởi tạo
Em dùng <code class="markdown-inline">@EzyConfigurationBefore</code> để khởi tạo <code class="markdown-inline">lobbyRoom</code>:
<pre>
@EzyConfigurationBefore
public class MMOVirtualWorldConfig extends EzyLoggable {
@EzySingleton("lobbyRoom")
public NormalRoom lobbyRoom() {
logger.info("Initialize lobby room");
return NormalRoom.builder()
Khi nào dùng SynchronizedPlayerManager vs. DefaultPlayerManager
Em thấy trong code breaking-game anh dùng DefaultPlayerManager để quản lý Player của toàn bộ game. Sao anh không dùng SynchronizedPlayerManager ạ?
EzyWrap khác gì String thường?
<a href="https://github.com/youngmonkeys/game-box/blob/master/src/test/java/com/tvd12/gamebox/testing/MMORoomGroupTest.java#L103" target="_blank" rel="noopener">https://github.com/youngmonkeys/game-box/blob/master/src/test/java/com/tvd12/gamebox/testing/MMORoomGroupTest.java#L103</a>
<p>
</p>
<p>
Trong MMORoomGroupTest em thấy a có dùng EzyWrap. Sao phải d
Cách test MMORoom
Em đang code cái <code class="markdown-inline">MMORoom</code> ở <a href="https://github.com/youngmonkeys/game-box/pull/2">https://github.com/youngmonkeys/game-box/pull/2</a>. Em có 1 số câu hỏi:
<p>
</p>
<ol start="1">
<li>Ở <code class="markdown-inline">NormalRoom</code>, thằng playerManager là raw type, làm sao chuyển nó thành <code class="markdown-inlin
Usecases của các loại Room trong game-box
Hiện tại em thấy có 3 loại room trong game-box: <code class="markdown-inline">NormalRoom</code>, <code class="markdown-inline">LocatedRoom</code> và <code class="markdown-inline">MMORoom</code> (đang phát triển). Anh có thể giải thích sự khác nhau và usecases cụ thể của từng loại được không ạ?
<p>
</p>
<p>
Anh có thể giải thích luôn về logic từng loại <cod
Các loại PlayerManager trong game-box
<ol>
<li>Cho em hỏi sự khác nhau giữa <code class="markdown-inline">LocatedPlayerManager</code> và <code class="markdown-inline">SimplePlayerManager.</code> Tại sao thằng <code class="markdown-inline">LocatedPlayerManager</code> không extends thằng <code class="markdown-inline">PlayerManager</code>?</li>
<li>Thằng <code class="markdown-inline">MMOPlayerManag
LocatedRoom khác gì Room
LocatedRoom có thêm chức năng quản lý slots, sao mình không đưa nó vào Room được ạ? MMORoom có nên extends LocatedRoom thay vì Room, vì nó cũng cần quản lý slots?
Warning khi dùng synchronized
Em thấy có warnings ở chỗ <code>synchronized (gameService)</code> và <code>synchronized (room)</code>. Anh giải thích giúp em vì sao có warnings này được không ạ?
<p>
</p>
<img class="alignnone size-large wp-image-438" src="https://stackask.com/wp-content/uploads/2021/08/Screen-Shot-2021-08-02-at-00.23.15-1024x640.png" alt="" /> <img class="alignnone size-
Vì sao không debug được LocatedRoom và LocatedPlayer
Cho em hỏi thằng LocatedRoom và LocatedPlayer có gì đặc biệt mà debugger nó không nhận 2 biến room và player vậy ạ?
<p>
</p>
<img class="alignnone size-large wp-image-429" src="https://stackask.com/wp-content/uploads/2021/08/Screen-Shot-2021-08-02-at-00.16.56-1024x660.png" alt="" />
Tại sao lại phải có playerManager trong GameService?
Trong hàm <code class="markdown-inline">findAvailableRoom</code> của GameService có gọi <code class="markdown-inline">room.addUser(user, player)</code>. Hàm <code class="markdown-inline">addUser</code> lại gọi <code class="markdown-inline">this.playerManager.addPlayer(player, location)</code>.
<p>
</p>
<p>
Cho em hỏi thằng <code class="markdown-inline">pla