farOs 介绍
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 将作为保留关键字
- 和其他语言不同me在ngame 是
类模板的属性,注意 类模板的属性必须以下划线开头,子类模板才能继承
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("你好世界","测试");
- 向控制台输出数据,arg可以是任何类型的数据
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();
}
- thisObject 指向自己的指针,如果类模板继承了其他文件,在实例化对象之后,这些被继承的类模板中的
os.importx("x.js")
- 导入其他文件的开放属性或者函数,被导入的文件一定要实现__exports__
//x.js let datas = {}; let __exports__ = {
datas:datas,
} //其他文件接收
let {datas} = os.importx("x.js");
- 导入其他文件的开放属性或者函数,被导入的文件一定要实现__exports__
- 通常情况下common.js 包括所有用到的内置函数库
js代码加密

farOs 介绍的更多相关文章
- CSS3 background-image背景图片相关介绍
这里将会介绍如何通过background-image设置背景图片,以及背景图片的平铺.拉伸.偏移.设置大小等操作. 1. 背景图片样式分类 CSS中设置元素背景图片及其背景图片样式的属性主要以下几个: ...
- MySQL高级知识- MySQL的架构介绍
[TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...
- Windows Server 2012 NIC Teaming介绍及注意事项
Windows Server 2012 NIC Teaming介绍及注意事项 转载自:http://www.it165.net/os/html/201303/4799.html Windows Ser ...
- Linux下服务器端开发流程及相关工具介绍(C++)
去年刚毕业来公司后,做为新人,发现很多东西都没有文档,各种工具和地址都是口口相传的,而且很多时候都是不知道有哪些工具可以使用,所以当时就想把自己接触到的这些东西记录下来,为后来者提供参考,相当于一个路 ...
- JavaScript var关键字、变量的状态、异常处理、命名规范等介绍
本篇主要介绍var关键字.变量的undefined和null状态.异常处理.命名规范. 目录 1. var 关键字:介绍var关键字的使用. 2. 变量的状态:介绍变量的未定义.已定义未赋值.已定义已 ...
- HTML DOM 介绍
本篇主要介绍DOM内容.DOM 节点.节点属性以及获取HTML元素的方法. 目录 1. 介绍 DOM:介绍DOM,以及对DOM分类和功能的说明. 2. DOM 节点:介绍DOM节点分类和节点层次. 3 ...
- HTML 事件(一) 事件的介绍
本篇主要介绍HTML中的事件知识:事件相关术语.DOM事件规范.事件对象. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三 ...
- HTML5 介绍
本篇主要介绍HTML5规范的内容和页面上的架构变动. 目录 1. HTML5介绍 1.1 介绍 1.2 内容 1.3 浏览器支持情况 2. 创建HTML5页面 2.1 <!DOCTYPE> ...
- ExtJS 4.2 介绍
本篇介绍ExtJS相关知识,是以ExtJS4.2.1版本为基础进行说明,包括:ExtJS的特点.MVC模式.4.2.1GPL版本资源的下载和说明以及4种主题的演示. 目录 1. 介绍 1.1 说明 1 ...
随机推荐
- 【转】新说Mysql事务隔离级别
作者:孤独烟 转自:https://www.cnblogs.com/rjzheng/p/9955395.html 引言 大家在面试中一定碰到过 说说事务的隔离级别吧? 老实说,事务隔离级别这个问题,无 ...
- 定位API的原理
参考:0Day 安全 所有的win_32程序都会加载ntdll.dll和kerner32.dll这两个最基础的动态链接库.如果想要在win_32平台下定位kernel32.dll中的API地址 1,首 ...
- Javascript - Vue - webpack + vue-cil
cnpm(node package manager)和webpack模块 npm是运行在node.js环境下的包管理工具(先安装node.js,再通过命令 npm install npm -g 安装n ...
- Go并发控制--Channel篇
目录 1. 前言 2. 使用channel控制子协程 2.1 使用场景 2.2 总结 1. 前言 我们考虑这么一种场景,协程A执行过程中需要创建子协程A1.A2.A3-An,协程A创建完子协程后就等待 ...
- Learning ROS: rqt_console和rqt_logger_level使用
rqt_console:操作.查看log信息 rqt_logger_level:设置log等级 打开node: rosrun rqt_console rqt_console rosrun rqt_lo ...
- Data Leakage in Machine Learning 机器学习训练中的数据泄漏
refer to: https://www.kaggle.com/dansbecker/data-leakage There are two main types of leakage: Leaky ...
- Android Jetpack基本架构之ViewModel+LiveData+DataBinding入门
前提:导入所有依赖,开启DataBinding app的build.gradle android { defaultConfig { ... dataBinding { enabled true } ...
- JavaWeb中表单数据的获取及乱码问题
首先使用一个用户提交界面作为举例(文本框,密码框,选择,下拉表单等),效果如下 注:HTML < form> 标签的 action 属性,其定义和用法是: 属性值为URL,表示向何处发送表 ...
- kubernetes部署一个应用程序
文章原文 部署 nginx Deployment 如果你已经完成了Kubernetes的搭建,那我跟我一块来部署第一个应用程序吧.没有完成 Kubernetes 集群搭建的,请参考文档 使用 kube ...
- JS_DOM操作之查找标签
1 - 直接查找标签 // 方式1:获取元素 document.getElementsByTagName("标签名") document.getElementById(" ...