nGame

  • nGame 一款文字游戏服务端框架;用于快速构建:自由探索、武侠、修真、模拟,回合制,剧本杀、动态语言小说、等服务器
  • 如果你有期望实现的功能请加Q群

ngame计划

  • 完善框架功能

farOs

  • farOs 作为 nGame框架的驱动,底层使用机器码运行,支持多线程、协程、可快速实现HTTP服务器、聊天服务器,restApi服务器

farOs计划

  • socket、websocket客户端

    • httpClient
  • JS代码加密
  • 将JS编译为本地机器码
  • JS泛型支持
  • JS面向对象特性支持

部署

  • 将farOs.jar、jdk、 run.bat、ngame放在同一级目录下,然后执行run.bat即可.

       正确的目录结构应该是
    - ngame
    - jdk
    - farOs.jar
    - run.bat
  • 在执行run.bat之前,需要设置两个地方

    • 游戏的目录设置

      • 在ngame下找到conf.js 将 appRootPath 对应的值改成游戏目录名字 如ngame
    • 设置farOs启动需要的配置文件路径 修改run.bat中的参数

      java -Dfile.encoding=utf-8 -XX:-UseParallelGC -Xmx512m -Xms512m -Xmn256m -jar farOs.jar game-script/conf.js

      将最后的game-script/conf.js换成游戏目录中的conf.js地址 再启动run.bat

连接服务器

  • farmud.exe 是临时的测试服务器的客户端工具,使用C#开发,功能简单,没有开源的必要。有能力的大佬可自行开发其他版本的websocket客户端。

  • 由于目前更新非常频繁 ngame配套的运行环境<farOs、jdk、farmud.exe、run.bat、Redis-x64-3.2.100 win免安装版>

    都在群内下载963081167

目录介绍

  • adm

    • 核心文件存放目录
  • adm/daemons

    • 需要常驻内存的程序
  • adm/master/master.js

    • 重要文件,驱动会调用该文件中的一些函数
  • clone

    • 模板类
  • clone/data

    • 游戏素材属性配置目录,建议所有的游戏元素的属性配置存放于此
  • cmds

    • 指令目录
  • d

    • 地图相关存放
  • include

    • 通用函数库
  • inherit

    • 存放可以被继承的类
  • main

    • 该目录只有一个main.js文件,为程序入口
  • demo

    • 演示程序
  • conf.js

    • 配置文件 准确说是驱动需要的配置文件

特性介绍和约定

超级属性、魔法属性、精灵属性

XXX` 大写的都为对象的魔法属性

__xxx__ 小写的都为驱动为对象增加的超级属性

_exports_ 精灵属性

大佬们一定 要区别清楚这些属性,虽然感觉有点扯蛋。。。

web和rest api支持

  • 目前暂时只支持静态页面 默认的网站目录 www 默认访问路径 http://127.0.0.1:8080

  • restapi 的访问路径 http://127.0.0.1:8080/api 不喜欢后面跟个api的可以用nginx做反向代理

  • 关于对js的支持

    ngame使用farOs驱动,farOs兼容了95%的js语法,除了farOs额外提供的体贴内置函数,大部分JS函数以及JS的特性都支持。

    从应用框架的角度讲farOs等同于nodejs;不同的是,farOs更专注文字游戏领域。

  • 文件

    • 在ngame中一个文件等同于一个类模板,这个概念非常重要。所有的类模板的父类模板都存放在inherit目录下
  • 关键字

    • me

      • 和其他语言不同me在ngame 是this的作用,是对自己的调用,me 将作为保留关键字
    • 类模板的属性,注意 类模板的属性必须以下划线开头,子类模板才能继承

       inherit/skill.js
    
       let _prop;
    function create() { }
    • 继承
       //继承哪些JS 在所有代码之前要完成继承
      let inherits = ([
      "inherit/data.js",
      "inherit/room.js"
      ]);
    • 引入函数库
          //载入那些函数库
      let includes = ([
      "include/common.js",
      ]);

核心函数库介绍

  • include/common.js

    • 通常情况下common.js 包括所有用到的内置函数库

      • os.debug(arg[,args...])

        • 向控制台输出数据,arg可以是任何类型的数据
              os.debug("你好世界","测试");
      • newObj(arg1[,arg2]);

        • 将类模板实例化为游戏对象

          • arg1 模板类文件地址
          • arg2 对象属性配置文件地址
          let obj = newObj("clone/user.js");
          let obj = newObj("clone/user.js","clone/data/npc/xiaoyaozi.js"); //当newObj使用第二个参数,自动装载对象属性时
          //被装载的文件一定要实现以下内容
          let datas = {
          //存储属性
          due:{
          id:"xiaoyaozi",
          name:"逍遥子",
          },
          //临时属性
          temp:{ }
          }; let __exports__ = {
          datas:datas,
          }
      • D(arg[,type])

        • 在一个类模板中调用其他类模板的方法或者属性

          • 被调用的类模板如果没有加载到内存,驱动会自动加载一次
            D("adm/daemons/x.js")->killAll();
        • 默认情况下D函数根据类模板的文件名查找,如果需要根据类模板的实例的文件名查找,需要加上参数type,设置为1即可
            D("adm/daemons/x.js#H6f751",1)->killAll();
      • thisObject

        • thisObject 指向自己的指针,如果类模板继承了其他文件,在实例化对象之后,这些被继承的类模板中的

          thisObject 关键字,都指向子类

          function a(){
          } function b(){
          thisObject.a();
          //为了方便可以先赋值
          let me = thisObject;
          me.a();
          }
      • os.importx("x.js")

        • 导入其他文件的开放属性或者函数,被导入的文件一定要实现__exports__
              //x.js
          
              let datas = {};
          
              let __exports__ = {
          datas:datas,
          } //其他文件接收
          let {datas} = os.importx("x.js");

js代码加密

farOs 介绍的更多相关文章

  1. CSS3 background-image背景图片相关介绍

    这里将会介绍如何通过background-image设置背景图片,以及背景图片的平铺.拉伸.偏移.设置大小等操作. 1. 背景图片样式分类 CSS中设置元素背景图片及其背景图片样式的属性主要以下几个: ...

  2. MySQL高级知识- MySQL的架构介绍

    [TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...

  3. Windows Server 2012 NIC Teaming介绍及注意事项

    Windows Server 2012 NIC Teaming介绍及注意事项 转载自:http://www.it165.net/os/html/201303/4799.html Windows Ser ...

  4. Linux下服务器端开发流程及相关工具介绍(C++)

    去年刚毕业来公司后,做为新人,发现很多东西都没有文档,各种工具和地址都是口口相传的,而且很多时候都是不知道有哪些工具可以使用,所以当时就想把自己接触到的这些东西记录下来,为后来者提供参考,相当于一个路 ...

  5. JavaScript var关键字、变量的状态、异常处理、命名规范等介绍

    本篇主要介绍var关键字.变量的undefined和null状态.异常处理.命名规范. 目录 1. var 关键字:介绍var关键字的使用. 2. 变量的状态:介绍变量的未定义.已定义未赋值.已定义已 ...

  6. HTML DOM 介绍

    本篇主要介绍DOM内容.DOM 节点.节点属性以及获取HTML元素的方法. 目录 1. 介绍 DOM:介绍DOM,以及对DOM分类和功能的说明. 2. DOM 节点:介绍DOM节点分类和节点层次. 3 ...

  7. HTML 事件(一) 事件的介绍

    本篇主要介绍HTML中的事件知识:事件相关术语.DOM事件规范.事件对象. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三 ...

  8. HTML5 介绍

    本篇主要介绍HTML5规范的内容和页面上的架构变动. 目录 1. HTML5介绍 1.1 介绍 1.2 内容 1.3 浏览器支持情况 2. 创建HTML5页面 2.1 <!DOCTYPE> ...

  9. ExtJS 4.2 介绍

    本篇介绍ExtJS相关知识,是以ExtJS4.2.1版本为基础进行说明,包括:ExtJS的特点.MVC模式.4.2.1GPL版本资源的下载和说明以及4种主题的演示. 目录 1. 介绍 1.1 说明 1 ...

随机推荐

  1. Maven项目管理工具--简单实用与入门

    Maven管理的方式就是"自动下载项目所需要的jar包,统一管理jar包之间的依赖关系" Maven下载与安装 1.首先确保JDK已安装,且JDK为1.6+(尽量新,新肯定支持,旧 ...

  2. webpack编译后的代码如何在浏览器执行

    浏览器是无法直接使用模块之间的commonjs或es6,webpack在打包时做了什么处理,才能让浏览器能够执行呢,往下看吧. 使用commonjs语法 先看下写的代码, app.js minus.j ...

  3. TypeScript 中枚举类型的理解?应用场景?

    一.是什么 枚举是一个被命名的整型常数的集合,用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型 通俗来说,枚举就是一个对象的所有可能取值的集合 在日常生活中也很常见,例如表 ...

  4. ELK+kafka+filebeat搭建生产ELFK集群

    文章原文 ELK 架构介绍 集群服务版本 服务 版本 java 1.8.0_221 elasticsearch 7.10.1 filebeat 7.10.1 kibana 7.10.1 logstas ...

  5. 剑指offer计划9(动态规划中等版)---java

    1.1.题目1 剑指 Offer 42. 连续子数组的最大和 1.2.解法 得到转移方程后,单次遍历. 当前面的连续子数组的和比较是否大于0,是则加起来, 若小于零,则当前的值就可当子数组的开头. 判 ...

  6. Gitlab(2)- centos7.x 下安装社区版 Gitlab 以及它的配置管理

    前置准备:虚拟机安装以及配置相关 包含安装 centos7.8 虚拟机.设置静态 ip 等 https://www.cnblogs.com/poloyy/category/1703784.html 注 ...

  7. 富文本编辑器-SpringBoot

    目录 简介 Editor.md 基础工程搭建 数据库设计 基础项目搭建 文章编辑整合(重点) 图片上传问题 表情包问题 文章展示 简介 项目地址:https://gitee.com/zwtgit/ri ...

  8. LVS负载均衡集群--DR模式部署

    目录: 一.LVS-DR数据包流向分析 二.DR 模式的特点 三.LVS-DR中的ARP问题 四.DR模式 LVS负载均衡群集部署 一.LVS-DR数据包流向分析 1.为方便进行原理分析,将clien ...

  9. utittest和pytest中mock的使用详细介绍

    头号玩家 模拟世界 单元测试库介绍 mock Mock是Python中一个用于支持单元测试的库,它的主要功能是使用mock对象替代掉指定的Python对象,以达到模拟对象的行为. python3.3 ...

  10. hyperf从零开始构建微服务(二)——构建服务消费者

    阅读目录 构建服务消费者 安装json rpc依赖 安装JSON RPC客户端 server配置 编写业务代码 编写服务消费者类 consumer配置 配置 UserServiceInterface ...