小编Thi*_*att的帖子

node.js中的多人游戏架构-状态管理和Redux同步

我正在实施一个在线TCG游戏(想像《炉石传说》 /《魔幻》)作为一个宠物项目,我决定将React / Redux用于客户端UI。这使我考虑在服务器上使用Redux以及维护每个客户端/游戏的全局状态的可能性。

它的工作方式是,游戏中的玩家会将事件(通过socket.io)发送到服务器,该事件将根据游戏状态和规则进行验证,然后触发服务器状态的更改并将其传播到服务器各自的客户。

问题是,我觉得我将不得不跳很多圈来使所有游戏规则/逻辑符合Redux的更多功能/不变方法,而不是将我的所有游戏实体建模为类。另外,由于每个玩家对自己对手的信息都很有限(例如,您看不到另一位玩家的手),因此我必须具有一些自定义逻辑,用于根据接收数据的玩家来过滤状态信息。

另一方面,我喜欢这样的想法:在每个域的不同处理程序之间分配集中状态,可预测的数据流以及回归到先前状态的可能性。同样,Redux中的动作也非常适合命令模式,这对于这类游戏很有用。

我是否应该像状态管理器那样实现自定义Redux,但放弃不变性部分呢?对于这种情况,是否有更“尝试而真实”的方法?

architecture state multiplayer node.js redux

5
推荐指数
1
解决办法
549
查看次数

Ubuntu 中全新 clojure 安装 - 构建类路径时出错

我刚刚在 VirtualBox 上安装了新的 Ubuntu 副本来尝试 Clojure。我按照@ https://clojure.org/guides/getting_started的说明进行操作,安装了所有 deps 等,但是当我尝试运行 repl 时,clj我不断收到以下错误:

Error building classpath. Failed to read artifact descriptor for org.clojure:clojure:jar:1.9.0
org.eclipse.aether.resolution.ArtifactDescriptorException: Failed to read artifact descriptor for org.clojure:clojure:jar:1.9.0
    at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:276)
    at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescriptorReader.java:192)
    at org.eclipse.aether.internal.impl.DefaultRepositorySystem.readArtifactDescriptor(DefaultRepositorySystem.java:253)
    at clojure.tools.deps.alpha.extensions.maven$eval685$fn__687.invoke(maven.clj:79)
    at clojure.lang.MultiFn.invoke(MultiFn.java:243)
    at clojure.tools.deps.alpha$expand_deps.invokeStatic(alpha.clj:170)
    at clojure.tools.deps.alpha$expand_deps.invoke(alpha.clj:152)
    at clojure.tools.deps.alpha$resolve_deps.invokeStatic(alpha.clj:215)
    at clojure.tools.deps.alpha$resolve_deps.invoke(alpha.clj:197)
    at clojure.tools.deps.alpha.script.make_classpath$create_classpath.invokeStatic(make_classpath.clj:59)
    at clojure.tools.deps.alpha.script.make_classpath$create_classpath.invoke(make_classpath.clj:52)
    at clojure.tools.deps.alpha.script.make_classpath$run.invokeStatic(make_classpath.clj:70)
    at clojure.tools.deps.alpha.script.make_classpath$run.invoke(make_classpath.clj:64)
    at clojure.tools.deps.alpha.script.make_classpath$_main.invokeStatic(make_classpath.clj:109)
    at clojure.tools.deps.alpha.script.make_classpath$_main.doInvoke(make_classpath.clj:84)
    at clojure.lang.RestFn.applyTo(RestFn.java:137)
    at clojure.lang.Var.applyTo(Var.java:702)
    at clojure.core$apply.invokeStatic(core.clj:657)
    at clojure.main$main_opt.invokeStatic(main.clj:317)
    at clojure.main$main_opt.invoke(main.clj:313)
    at clojure.main$main.invokeStatic(main.clj:424)
    at clojure.main$main.doInvoke(main.clj:387)
    at clojure.lang.RestFn.applyTo(RestFn.java:137)
    at …
Run Code Online (Sandbox Code Playgroud)

java clojure maven

5
推荐指数
1
解决办法
1673
查看次数

cordova android sql选择返回长度1但没有行

我正在开发的这个应用程序上有一些奇怪的行为.虽然在浏览器上测试一切似乎都运行良好,但我尝试在设备上部署我的应用程序进行测试,显然所有WebSQL相关工作都很好,直到我做一个选择.我在行上SQLResultSet返回length = 1,但那里没有行.我试图检查应用程序并查看chrome上的Resources选项卡并database创建了IS,实际上有一行.所以返回正确的长度而不是行.

有人有这样的事吗?

sqlite android web-sql cordova

2
推荐指数
1
解决办法
751
查看次数