对于多玩家编程游戏,我正在为Scala开发一个后台编译服务器,它支持编译由玩家提交的多个独立源树.我成功地运行了快速的顺序编译,而无需通过实例化Global编译器对象来重新加载编译器
val compilerGlobal = new Global(settings, reporter)
Run Code Online (Sandbox Code Playgroud)
然后通过运行单个编译作业
val run = new compilerGlobal.Run
run.compile(sourceFilePathList)
Run Code Online (Sandbox Code Playgroud)
我现在理想地希望并行化服务器(即同时进行多个编译),但每次都不需要重新加载编译器(主要是为了避免重新解析lib).这是可能的,即上面显示的第二部分(安全地:-)重入,还是保持全局状态?如果没有,我还能尝试别的吗?我目前专注于支持Scala 2.9.1.
对于一个旨在帮助人们学习Scala的社区资源的小型教育项目,我正在寻找一种在后台线程中提供和处理网页的简单方法.
最小背景:Scalatron是一款多人游戏,其中玩家将机器人程序(用Scala编写)相互对立.它伴随着一步一步的Scala教程.目前,玩家需要在他们的本地机器上使用IDE来编译机器人,然后通过将机器人复制到共享网络目录中将其发布到游戏中.这很麻烦.对于下一个版本,最好提供基于浏览器的机器人编辑和发布,以最大限度地简化组织者和玩家的设置.
我已经有了一个后台线程工作,它将编译即时到达服务器的Scala源代码(无需完整的IDE).接下来,我必须运行一个小型的Web服务器,为玩家提供一个接入点,并处理机器人上传(这可以摆脱网络共享).
要求是非常基本的:最初我设想用一个编辑框和一个"开始"按钮服务一个页面(=上传到服务器,编译并发布到游戏中); 我希望每隔5或10秒钟,所有用户上传不超过一个机器人的并发用户不超过20个; 我需要为每个用户保持最小状态(只是一个名字),我需要向用户返回编译器错误消息.请注意,游戏屏幕更新不会显示在浏览器中,而是显示在连接到服务器计算机的投影仪上.主要是为了允许最简单的设置(双击游戏服务器.jar)我认为在现有游戏服务器中的后台线程中运行Web服务器会很不错.
最合适的方法是什么?我应该使用一些现有的框架,比如Play或Lift吗?是否存在执行与此类似的操作的代码?计划在这样的后台线程中运行Web服务器是否合理?任何建议表示赞赏.