Seize the Day

基于TypeScript的PixiJS开发环境设置(webpack篇)


前几天写了一篇Browserify打包的 PixiJS 的开发环境配置流程,但是Web技术一日千里,开发工具也日新月异, Webpack 就是其中之一。本文介绍了以 TypeScript 作为开发语言, PixiJS 作为图形渲染引擎, Webpack 作为模块打包工具的开发环境的配置过程,遵循简化易用的原则,省略了一些非必要模块的安装。

安装

项目结构

  1. 创建项目目录
mkdir ts_pixi
cd ts_pixi
mkdir assets src dist
  1. 新建项目文件
touch index.html
touch src/main.ts
  1. 初始化项目
npm init

安装模块

  1. PixiJS
npm install --save-dev pixi.js
  1. TypeScript,如果使用Visual Studio Code作为IDE,可以安装相应@types文件,用于代码提示等功能。
npm install --save-dev typescript @types/pixi.js @types/node
  1. 其它
npm install --save-dev ts-loader webpack webpack-dev-server
Read more ⟶

基于TypeScript的PixiJS开发环境设置(browserify篇)


PixiJS 作为一款出色的WebGL 2D渲染引擎,除了支持JavaScript之外,还支持 TypeScript 。 TypeScript 的优点不言而喻,支持静态类型检查,IDE代码提示,具有较好的可读性。所以用来替代JavaScript开发项目,也有利于将来的代码重构。本文介绍了以 TypeScript 作为开发语言, PixiJS 作为图形渲染引擎, Browserify 作为模块打包工具的开发环境的配置过程。

前提

不可或缺的当然是node。

node --version

安装

初始化项目

  1. 创建项目目录
mkdir ts_pixi
cd ts_pixi
mkdir assets src dist
  1. 新建项目文件
touch index.html
touch src/main.ts
  1. 初始化项目
npm init

安装模块

  1. PixiJS
npm install --save pixi.js
  1. TypeScript
npm install --save-dev typescript
  1. 其它
npm install --save-dev browserify browserify-shim http-server tsify tslint
Read more ⟶

AI行为树的工作原理


原文: Behavior trees for AI: How they work 作者: Chris Simpson 译者: Anthony Han

最近在研究行为树相关的内容,看了不少很好的文章。不同于其它文章阐述行为树的原理和实现,这篇文章着重于实践使用,介绍了行为树一般用法,还有一些开阔眼界的特别技巧。为加深印象,我利用业余时间翻译了一下,也希望对他人也有帮助。

引言

虽然网上有很多行为树的教程和指南,但是在研究能不能用在 Project Zomboid 中时,我总是遇到同样的问题。许多教程把重点放在行为树的代码实现上,或者仅仅专注在无上下文的流程图上,而没有任何真正适用的示例,其图表就像这样: image

虽然在帮助我理解行为树的核心原则方面,这些教程是非常有价值的。但我发现自己处于一种情况:即使知道行为树的运作机制,我也不知道我应该为游戏创建什么样的节点,或者一个真正的完全成型的行为树是什么样子。

我花了大量的时间进行实验(由于Zomboid项目是用Java写的,我一直在用很棒的JBT —— Java行为树( http://sourceforge.net/projects/jbt/ ),所以我没有必要关心自己的实际代码实现。尽管有很多教程的重点在这方面,还有许多常用的游戏引擎中的实现。

我在这篇文章提到的某些特定装饰器的节点类型,可能来自于 JBT 而不是一般的行为树概念,但是我发现它们是行为树系统中不可或缺的一部分。如果你的行为树不支持的话,你可以考虑实现一下。

我不会自称是这个方面的专家,但是经过 Project Zomboid 游戏中NPC的开发工作,我觉得我还是有点本事的,所以我想我要爆料一些东西。如果我早点知道会让我的第一次尝试更顺利,或者至少打开了我的眼界,让我了解通过行为树可以做到什么。我不打算深入进行实现,但会给出一些在 Zomboid 项目中使用的抽象示例。

Read more ⟶

建筑师谈《监狱建筑师》


原文: We Asked an Architect About the Game ‘Prison Architect’

作者: EMANUEL MAIBERG

译者: Anthony Han

这是一篇我自己翻译的文章,主要动力源于几个月前玩的《监狱建筑师》这款游戏。因琐事所累,当时没有写下自己的体验感受。只留下书签栏中的这篇文章,或许可以从另一个角度来看这款游戏并审视其独特题材的社会意义。

prison architect

《监狱建筑师》,一款类似模拟城市的监狱模拟经营游戏,恰到好处地探究到了其主题的骇人之处。

玩家作为《监狱建筑师》的首要任务是用电椅处死一个囚犯,但在你按那个死亡开关前,你还得弄清楚很多细节。你需要建一个单独的建筑,带有一个执行室和拘留室。如果你心肠好的话,可以加一个窗和书架。每个房间需要一定的大小,并使用不同类型的地板。每个房间还需要连接到监狱的电网,电椅会消耗很多电力,所以你要为你的发电机增加一些电容器。

当你处死囚犯的时候,这个事只是众多的待办事项中的一项:建更多的牢房,扩大食堂,建一个实施戒毒方案的公共房间,修复淋浴管道。还有,哦,处死这个囚犯。

游戏开发商 Introversion Software 的创意总监克里斯·迪莱(Chris Delay)说,他们特意挑选了监狱生活中最黑暗的部分作为游戏的第一章节。他说:“如果把它当成建造酒店或者其它东西的游戏就会非常轻松。”“但从一开始,我们就认识到,必须让玩家知道这是不一样的体验,他必须要有不一样的思路。”

游戏的最基本的建筑单元就是那些构成地图的方块。如何解决问题就看你如何有效使用分配给你的空间,经过足够长的时间后,你就会得到自己看待世界的方式(以自己的想法来构建世界),这就是模拟经营游戏的乐趣。这是一个关于最优化的练习。如果你像我一样,看到整齐有序的书架或者清洁干净的桌面感到莫名的享受时,玩模拟经营游戏尤其满足。

但是,我依然会记得这个游戏的主题,尤其知道现实生活中这一切都是真实存在的之后,我意识到,原来我在游戏里干得很棒的工作竟然如此可怕。

Read more ⟶

Anders Hejlsberg谈C#、Java和C++中的泛型


标题: Anders Hejlsberg谈C#、Java和C++中的泛型 译者: lover_P

原文: Generics in C#, Java, and C++: A Conversation with Anders Hejlsberg, Part VII 作者: Bill Venners、Bruce Eckel

人物介绍 Anders Hejlsberg,微软著名工程师,带领他的小组设计了C#(读作:C-Sharp)程序设计语言。Hejlsberg第一次登上软件界历史舞台是在80年代早期,因为他为MS-DOS和CP/M设计了Pascal编译器。当时,还是一个小公司的Borland很快雇用了他,并买下了他的编译器,改称Turbo Pascal。在Borland,Hejlsberg继续开发Turbo Pascal,并最终带领他的小组设计了Turbo Pascal的替代品:Delphi。1996年,在进入Borland 13年后,Hejlsberg加入了微软。最初,他做Visual J++和Windows Fundatioin Classes(WFC)的架构师。随后,Hejlsberg成为C#的首席设计师和.NET Framework的关键参与者。目前,Anders Hejlsberg还在领导着C#程序设计语言的继续开发。

Bruce Eckel,Think in C++(C++编程思想)和Think in Java(Java编程思想)的作者。

Bill Venners,Artima.com的主编。

内容

  • 泛型概述
  • C#中的泛型
  • C#泛型和java泛型的比较
  • C#泛型和C++模板的比较
  • C#泛型中的约束
Read more ⟶

Bitnami Redmine 升级简易指南


顺利地将项目组的 Redmine 从3.1.0 升到3.3.0,没遇到什么问题。因为用的是 Bitnami 集成包,结合 Bitnami 和 Redmine 的文档,很快就完成了升级。

系统需求

适用于Windows平台的 Bitnami Redmine 2.x+ 升级到 3.3,Redmine 的 Ruby, Rails 系统需求见下表

Redmine version Supported Ruby versions Rails version used
3.3, current trunk ruby 1.9.3, 2.0.0, 2.1, 2.21, 2.3 Rails 4.2
3.2, 3.1 ruby 1.9.3, 2.0.0, 2.1, 2.21 Rails 4.2

Redmine 3.2 or lower does not support Ruby 2.3. Redmine 3.3 supports Ruby 2.3. Redmine does not support JRuby because some gems do not support Rails 4.2. 细节参看 Requirements

备份数据

Bitnami Stack

若使用 Bitnami 集成包,可以直接备份整个目录即可。

Redmine

若只升级 Redmine 则先确认系统需求然后执行备份。

备份文件

最好备份整个 redmine 目录,主要包括

  • 上传文件(apps\redmine\htdocs\files)
  • 插件(apps\redmine\htdocs\plugins)
  • 主题(apps\redmine\htdocs\themes)
  • 配置文件(apps\redmine\htdocs\config)
Read more ⟶