安装
尽管用 Impact 写的游戏可以脱机工作,但大多数浏览器都不允许。这些浏览器由于同源策略的缺陷,拒绝访问某些功能(在 file://game/lib/ 下的文件与在 file://game/ 下的文件不被认为是在同一个“域”下)。 Opera 是个显著的例外。

此外,Weltmeister 关卡编辑器使用一些 .php 脚本来加载和保存关卡,列出目录的内容。Kilofox.Net

长话短说,您需要一个网页服务器。说到网页服务器,并不意味着是一个单独的服务器计算机,它只是你电脑里的一个提供 web 服务的程序。如果您使用的是 MacOSX ,您就已经拥有网页服务器了,也安装了 PHP ,只需启用它。在 Windows 中,您可以安装 Apache 和 PHP。这不是很复杂。如果您使用的是 Linux,那么您应该是个电脑虫,完全可以自己配置出来。^_^

如果你想手动安装 Apache 和 PHP,需要帮助,请问谷歌。Kilofox.Net

现在,你已经有网页服务器了,PHP 也运行了,对吧?好!不仅要把 Impact 解压到网页服务器的根目录下,还要让你的浏览器指向 http://localhost/ 。您应该看到了一个目录列表,包括您刚刚创建的 impact/ 子目录。试着通过http://localhost/impact/weltmeister.html 加载 Weltmeister 。载入后应该没有任何错误。Kilofox.Net

如果有错误信息,你应该在浏览器控制台里查看。如果你不知道去哪里找错误控制台,往下读。

其他解决方案:

  • 如果你不想使用 PHP 或者 Apache,Conner Petzold 制作了一个 nodejs 模块,它可以让 Impact 在一个 HTTP 服务器节点上运行。他的 node-impact 模块在 GitHub 上有。
  • 如果您使用的是 Windows,并且喜欢在 IIS .NET 上开发 Impact,试试 Mike Hamilton 的 ImpactJS-IIS-.NET-API 项目。
  • 为方便 Ruby 爱好者,Chris Darroch 为 Impact 集成了 Sinatra 后台,您只需在 lib/weltmeister/config.js 的 API 调用中删除 .php 扩展,启用 impact.rb。

设置工作环境
如果你正在用 Impact 制作游戏(或者其它浏览器相关),浏览器的开发工具和 JavaScript 控制台将派上用场。如果你不使用它们,某些东西不工作了,你将陷入茫然。

  • 在谷歌浏览器中,你可以点击“扳手”图标 -> 工具 -> JavaScript 控制台,找到控制台。
  • 在 Safari 浏览器中,你必须先开启开发菜单:打开 Safari 的 Preferences through Safari -> Preferences,点击“高级”选项卡,选中“Show Develop menu in menu bar”。之后,您可以通过 Develop -> Show Error Console 打开控制台。
  • 对于 Firefox,请安装最棒的 Firebug 扩展。Kilofox.Net
  • 在 Opera 中,你可以在菜单 -> 网页 ->开发者工具 -> Opera Dragonfly 里找到开发工具。
  • 如果您正在使用 Internet Explorer ,那就考虑使用其他浏览器吧。Impact 可以在 IE9 上运行,但是速度有点慢。您可以按 F12 键打开”开发人员工具“。

现在你只需要一个文本编辑器来编辑你的源文件。如果你是自虐型的,Windows 的记事本都可以。然而,使用支持语法高亮的编辑器将使您生活得更轻松。

我使用的是 Komodo Edit,基本上是 Komodo IDE 的免费版本。不用看它的名字,Komodo Edit 还是一种 IDE。它真的很棒,可以用在 Windows、MacOSX 和 Linux 上。

如果你只是想要一个轻量级的编辑器,我可以推荐 SciTE for Windows 和 Linux。它还可以用在 MacOSX 上,但是设置它有点麻烦。

对于 MacOSX ,听说 BBEdit 和 TextMate 大概是“最好”的编辑器。Kilofox.Net

这些只是根据我个人的经验提出的一些建议。不要信任我。请随意到处看看,尝试不同的编辑器和 IDE。

目录结构
Impact 安装完成以后,应该有以下的目录结构:

  1. media/
  2. lib/
  3. lib/game/
  4. lib/game/entities/
  5. lib/game/levels/
  6. lib/impact/
  7. lib/weltmeister/

复制代码

您的所有游戏资源,比如图像、声音和音乐,都应放在 media/ 目录下。Kilofox.Net

lib/ 目录存放所有的 JavaScript 文件。lib/impact/ 存放 Impact 引擎本身。
lib/weltmeister/ 存放关卡编辑器的所有源文件。
您自己的游戏源文件应该放在 lib/game/ 下。
实体的源文件应该放在 lib/game/entities/ 下。
这样 Weltmeister 才能找到它们。

HTML 文件
用 Impact 写的游戏可以直接在浏览器中运行。不需要任何插件。然而,由于 JavaScript 本身没有显示东西的地方,Impact 需要在一个 HTML 页的 <canvas> 标记上渲染游戏画面。

最基本的 HTML 页看起来类似这样:Kilofox.Net

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>My Awesome Game!</title>
  5. <script type="text/javascript" src="lib/impact/impact.js"></script>
  6. <script type="text/javascript" src="lib/game/game.js"></script>
  7. </head>
  8. <body>
  9. <canvas id="canvas"></canvas>
  10. </body>
  11. </html>

复制代码

当然,这个页可以用后来的内容(文字、链接、图像等)进一步扩展,就像其他 HTML 页一样。也可以使用 CSS 样式。我在这儿真的不能再详细说了,因为这本身就是一个庞大的话题。但是,这个基本的 HTML 页确实是你的游戏开发工作所需要的全部。

请注意,这个 HTML 页只引用了两个 JavaScript 文件:引擎和游戏主脚本。其他的所有 JavaScript 文件会被这两个文件自动包含进来。Kilofox.Net

在发布您的游戏之前,也可以把所有的 JavaScript 烘焙到一个(压缩的)文件中。这将大大缩短你的游戏的初始加载时间。然而,为方便开发,最好是让文件分开,有一个更好地综览。更多信息,请参阅烘焙。

您的游戏所需的所有图像和声音文件,也将通过 JavaScript 动态加载。Impact 的预加载,确保在游戏开始之前,所有的资源都被加载进来。Kilofox.Net

Impact 自带一个默认的 index.html ,用来加载 lib/game/game.js 文件。

weltmeister.html 用来加载编辑器。更多信息,请查看 Weltmeister 编辑器的介绍。

模块
JavaScript 本身并不提供 include() 函数,来加载其他 JavaScript 源文件。你可以写你自己的 include() 函数,用 Ajax 来加载文件,但是这会使你的游戏无法调试,因为所有的行号和文件名都会丢失,错误信息将比“匿名函数 anonymous() 中的错误“更难确定。

相反,Impact 的源代码被组织成模块。一个模块定义通常看起来类似这样:Kilofox.Net

  1. ig.module(
  2. 'game.my-file'
  3. )
  4. .requires(
  5. 'impact.game',
  6. 'impact.image',
  7. 'game.other-file'
  8. )
  9. .defines(function(){
  10. // code for this module
  11. });

复制代码

模块名“game.my-file”直接对应文件名。因此,这个模块位于 lib/game/my-file.js。同样,在 requires() 方法中列出的模块将分别从 lib/impact/game.js、 lib/impact/image.js 和 lib/game/other-file.js 载入。这些必需的文件会在模块主体(传递给 .defines() 的函数)执行之前被加载。你可以”ig 核心“参考资料中有关模块的部分。

Impact 是如何工作的?
Impact 引擎的核心,不是一个库,而是一个框架。也就是说,Impact 提供一个功能齐全的盒子,你可以把你的代码扔进去。Impact 运行其自身。你只需要把你的东西添加给它,也由引擎来管理。

“你的东西”,在大多数情况下,是 Impact 的一个基类的子类。最重要的一个就是 ig.Entity 类。游戏世界中的每一个对象,都将是 ig.Entity 的一个子类。Kilofox.Net

只要你启动你的游戏,Impact 就会建立一个调用 ig.system.run() 方法的时间间隔,每秒钟60次。这个方法做一些看家的东西,然后调用你的游戏的 run() 方法(默认情况下,只调用它自身的 update() 和 draw() )。

ig.Game 的 draw() 方法是很无聊的,它只是清除屏幕,在每一个背景层和实体上调用 draw()。

update() 方法更新背景层的位置(这是它感兴趣的地方),在每个实体上调用 update() 。实体默认的 update() 方法,是根据它的物理属性(位置、速度、反弹力等)移动,并且把游戏的碰撞地图也考虑进去。Kilofox.Net

在所有的实体更新完成后,游戏的 .checkEntities() 方法被调用。这个用来解决所有的动态碰撞,也就是实体与实体的碰撞。如果它与另一个实体重叠,而且“希望”检查,它还调用一个实体的 .check() 方法(更多详细信息,请参阅”类引用“)。

您可以在自己的 ig.Entity 和 ig.Game 子类中重写这些方法——您可以提供自己的逻辑,然后,如果你喜欢,可以用 this.parent() 调用原有方法。Kilofox.Net

记住,所有这一切都发生在每一帧上。那就是(如果浏览器能够跟上的话)每秒60次。

Impact 主题(一):安装与启动相关推荐

  1. 分布式消息队列RocketMQ(一)安装与启动

    分布式消息队列RocketMQ 一.RocketMQ简介 RocketMQ(火箭MQ) 出自于阿里,后开源给apache成为apache的顶级开源项目之一,顶住了淘宝10年的 双11压力 是电商产品的 ...

  2. Hexo系列 | Hexo安装、启动

    目录 前言 一.Hexo是什么? 二.安装node.js 三.安装Git 四.检查是否安装成功 五.Hexo安装.启动 前言 用Hexo框架搭建个人博客,记录搭建过程 个人博客效果 一.Hexo是什么 ...

  3. Jupyter Notebook主题皮肤安装设置

    Jupyter Notebook主题皮肤安装设置 主题皮肤库安装 pip install jupyterthemes 主题皮肤库命令 Jupyter Notebook主题皮肤库都是(jt)开头,后面紧 ...

  4. linux桌面主题包安装,Linux桌面主题GNOME安装实例

    一.主题下载本文引用地址:http://www.eepw.com.cn/article/201609/304594.htm 以苹果主题为例请到下载MacOS-X Aqua Theme 主题.分别有三个 ...

  5. 客快物流大数据项目(八):Docker的安装和启动

    目录 Docker的安装和启动 一.服务器规划 二.安装Docker 1.验证Linux内核版本 <

  6. vmware workstation 安装esx 启动vt功能

    vmware workstation 安装esx 启动vt功能,支持64bit虚拟机,如下所示: 转载于:https://blog.51cto.com/auqf12/1293587

  7. windows10下postgreSQL 下载、安装、启动、关闭

    windows10下postgreSQL 下载.安装.启动.关闭 下载 安装 l设置密码和端口,一直next直到安装完成 环境变量

  8. [PXE] Linux(centos6)中PXE 服务器搭建,PXE安装、启动及PXE理论详解

    本篇blog主要讲述了[PXE] linux(centos)PXE无盘服务器搭建,安装,启动及pxe协议详解 , Kickstart (PXE+DHCP+TFTP+HTTP). PXE环境概述 作为中 ...

  9. Windows服务的安装,启动,停止和卸载

    直接贴代码如下 public class RunServices{/// <summary>/// 安装并启动服务/// </summary>/// <param nam ...

  10. Oracle 11g 基于CentOS7安装并启动em

    2019独角兽企业重金招聘Python工程师标准>>> Oracle 11g 基于CentOS7安装并启动em 1.可以在虚拟机或者服务器上安装centos,具体过程省略,建议使用最 ...

最新文章

  1. 拼团小程序源码_纯小白如何做一个摄影电商拼团小程序?
  2. kdbg调试linux汇编,Ubuntu 16.04安装Kdbg替代Insight实现汇编的调试
  3. Sklearn 0.21 中文文档校对活动 | ApacheCN
  4. JDBC学习总结4-------简化DAO的写法
  5. 微信小程序 获取cookie 以及设置 cookie
  6. 如何使用Origin轻松绘制三点线段图
  7. java网页保存成pdf_JavaScript+Java实现HTML页面转为PDF文件保存的方法
  8. 在mysql中unique唯一索引的作用_mysql唯一索引和unique
  9. 运算放大器---输入偏置电流(IB)
  10. FMS4.5限制连接数
  11. Workman使用记录----
  12. 学生鲜花网页设计作品静态HTML网页模板源码 大学生鲜花商城网站制作 简单鲜花网站网页设计成品
  13. BZOJ 1251 序列终结者 Splay
  14. 使用D3D8实现2D图形显示技术
  15. 全球最严立法限塑令,会带来什么?
  16. python爬虫之爬取起点中文网小说
  17. Water Sensor水位传感器学习笔记
  18. 芯通信EC616的NB-IOT模组SCP5资料
  19. log4j日志文件乱码问题的解决方法
  20. 计算机桌面蓝字,电脑桌面上的图标都变成蓝色的了怎么办? – 手机爱问

热门文章

  1. 网络安全菜鸟学习之漏洞篇——sql(一)
  2. 13个UI设计软件,一次满足你的UI设计需求
  3. C++中的.hpp文件与.h文件
  4. 第十六届智能车稳压模块设计——LOD与DCDC的使用对比
  5. C#Ref与Out的区别
  6. eclipse maven插件问题:error occurred while automatically activating bundle org.eclipse.m2e.core.ui (525)
  7. 浙江省计算机二级考试几号,浙江省3月全国计算机二级考试时间
  8. 放射性核废料处理matlab模型,放射性废物处理问题模型.doc
  9. IS620F PN博途组态TO工艺对象,讨论汇川IS620F 替代西门子V90 PN的可行性
  10. 聊天机器人 2017