我正在实施一个在线TCG游戏(想像《炉石传说》 /《魔幻》)作为一个宠物项目,我决定将React / Redux用于客户端UI。这使我考虑在服务器上使用Redux以及维护每个客户端/游戏的全局状态的可能性。
它的工作方式是,游戏中的玩家会将事件(通过socket.io)发送到服务器,该事件将根据游戏状态和规则进行验证,然后触发服务器状态的更改并将其传播到服务器各自的客户。
问题是,我觉得我将不得不跳很多圈来使所有游戏规则/逻辑符合Redux的更多功能/不变方法,而不是将我的所有游戏实体建模为类。另外,由于每个玩家对自己对手的信息都很有限(例如,您看不到另一位玩家的手),因此我必须具有一些自定义逻辑,用于根据接收数据的玩家来过滤状态信息。
另一方面,我喜欢这样的想法:在每个域的不同处理程序之间分配集中状态,可预测的数据流以及回归到先前状态的可能性。同样,Redux中的动作也非常适合命令模式,这对于这类游戏很有用。
我是否应该像状态管理器那样实现自定义Redux,但放弃不变性部分呢?对于这种情况,是否有更“尝试而真实”的方法?
我刚刚在 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) 我正在开发的这个应用程序上有一些奇怪的行为.虽然在浏览器上测试一切似乎都运行良好,但我尝试在设备上部署我的应用程序进行测试,显然所有WebSQL相关工作都很好,直到我做一个选择.我在行上SQLResultSet返回length = 1,但那里没有行.我试图检查应用程序并查看chrome上的Resources选项卡并database创建了IS,实际上有一行.所以返回正确的长度而不是行.
有人有这样的事吗?