Paracraft是一款免费开源的3D动画与游戏创作软件,使用NPL语言开发完成。NPL语言是本书作者于2004年为了解决基于相似原理的AI仿真问题而研发的一种编程语言,其语法与主流编程语言兼容,NPL社区通过github开源了200多万行引擎与NPL类库代码。我们期待编程爱好者的加入。
《Paracraft编程入门》通过作者原创的Paracrft工具,让读者可以随心所欲地创作出任意复杂的3D动画与游戏,是一本AI及编程入门教材。
《Paracraft编程入门》中作者还分享了自己从7岁开始学习编程的经历,30多年编程生涯的感悟及学习编程的方法论。
《Paracraft编程入门》共分三篇:上篇包含61个循序渐进的编程项目,训练读者通过思维实验解决问题、理解AI和体验编程;中篇主要介绍编程理论,系统地讲解了变量、函数等重要编程概念;下篇为参考手册,《Paracraft编程入门》中所有的编程词汇都可以在下篇中查询。
《Paracraft编程入门》可供7岁以上喜欢编程的大、中、小学生,以及家长、教师、程序员等参考使用。
编程一直被误解为一件很难的事情。其中一个原因是几乎所有编程语言(工具、文档、开发者社区)都是英语文化圈下的产物,如果你英语不好,就无法真正融人其中;另一个原因是编程语言没有被教育者真正当作一种人类的语言去对待。
本书作为编程的入门教材,将正确的工具、学习方法介绍给希望真正掌握编程的你。本书的目标是通过我们原创的Paracraft工具,让你随心所欲地创作出任意复杂的3D动画与游戏。当你具备这种入门编程能力时,你仍然可以继续使用Paracraft开发专业的计算机软件或自学其他编程语言。
学习编程和学习外语很像,需要大量的打字练习。动手打字就如同学习外语中的发音一样重要。回忆一下,我们从出生开始就在学习母语的发音,然后每天还要去使用它,长大后又系统地学习它。一个4岁的小孩已经能用母语表达自己的任何想法。相似的,本书希望营造一个类似的学习环境,让你可以在计算机世界中表达自已的任何想法。这也是当代希望从事科学与创造性工作的人的一项必备技能。拥有编程的入门能力并不困难,但也需要4年的时间或打5000行以上的代码。
1989年,7岁的我照着我父亲给我的一本书编写了我人生中的第一个程序,并从此喜欢上了编程,小学期间我完成了大量的个人编程作品,达到随心所欲的入门状态,这要感谢我的老师。本书也希望和大家分享我的学习经历。
本书能够顺利出版,要感谢Paracraft的用户,尤其是奇仔、桃子、无心和阿杰,是你们的辛勤付出让我们的工具可以大放异彩。
感谢魔法哈奇超过500万注册用户近10年来的陪伴,很多用户从小学升到了大学,仍然没有完全离开这款3D社区和Paracraft。
感谢我过去和现在的团队,未来我们还有很长的道路要走,很多中途离开的同事依然在远程参与我们的开源社区。感谢合作伙伴与多位教育工作者愿意在我们的产品还不完善时,坚持使用我们的产品。
李西峙,1982年出生于哈尔滨。2005年毕业于浙江大学计算机系(竺可桢学院)。大学期间在国内外会议和刊物上发表游戏引擎、脚本语言技术、三维动画制作、CPU芯片设计等相关论文7篇,撰写专著1部。2004年出于长期对人工智能的兴趣和研究,开发了NPL语言(Neural Parallel Language)和ParaEngine3D游戏引擎,至今写了两百多万行的开源代码及工具。Paracraft也是基于NPL语言开发的一款3D创作工具。2007-2015年,先后获得著名风险投资IDC和国内著名企业家的投资,并出任CEO。
李铁才,1950年出生于上海,李西峙之父。哈尔滨工业大学及深圳研究生院双基地教授,博士生导师,深圳航天科技创新研究院科技委主任。1996年获“航天突出贡献专家”称号;1997年获国家特殊津贴;获国家、省部级科技成果奖18次;获中国发明专利30项,获美国发明专利3项。在国内外发表论文50余篇。历时30年致力于相似性原理及其应用技术的研究,撰写《相似性和相似性原理》,并编写了本书第5章。
上篇 项目
第1章 编程项目
1.0 绪论
1.0.1 Paracraft是什么
1.0.2 如何学习本书中的项目
1.0.3 项目8x27:安装Paracraft和编辑模式
1.1 几何相似与构建相似的虚拟世界
1.1.1 项目8x28:创建方块
1.1.2 项目8x29:批量操作
1.1.3 项目8x34:bmax模型
1.1.4 项目25x85:介绍“绘图程序”小游戏
1.2 基于编程的3D建模
1.2.1 项目35x127:CAD建模——桌子
1.2.2 项目35x129:CAD建模——空心的盒子
1.2.3 项目35x128:CAD建模——奥运五环
1.2.4 项目35x133:CAD建模——杯子
1.3 虚拟人物与虚拟人物的运动
1.3.1 项目8x30:电影方块
1.3.2 项目8x31:演员和动画
1.3.3 项目8x32:夏天游泳
1.3.4 项目8x33:制作简易动画开头
1.3.5 项目8x35:简易bmax小吉他
1.3.6 项目8x36:简易bmax小动画
1.3.7 项目20x60:动画模型方块
1.3.8 项目20x73:四足动物与镜头抖动效果
1.3.9 项目20x77:密室教学
1.3.10 项目20x80:bmax简易骨骼与x文件应用
1.3.11 项目20x105:传送石、电影地震镜头与人物表现
1.3.12 项目20x121:密室开头设计
1.4 构建我的电影世界使它可持续发展
1.4.1 项目20x132:电影方块与过山车
1.4.2 项目20x134:子母电影方块
1.5 如何赋予虚拟人物智能
1.5.1 项目6x18:代码方块教学1
1.5.2 项目6x19:代码方块教学2
1.5.3 项目6x20:乒乓球小游戏
1.5.4 项目6x22:迷宫小游戏
1.5.5 项目6x109:打字练习
1.5.6 项目26x100:曼德勃罗特集
1.5.7 项目17x69:飞行的小鸟
1.5.8 项目17x74:坦克大战
1.5.9 项目20x79:星球运动仿真教学
1.5.10 项目6x24:双重机关与事件
1.5.11 项目6x25:制作图形界面
1.5.12 项目6x26:代码方块的输出
1.5.13 项目6x21:钢琴
1.5.14 项目17x120:制作钟表
1.5.15 项目35x130:CAD建模“掷骰子”
1.5.16 项目6x37:剧E一髟E
1.5.17 项目36x136:台式计算机模拟
1.5.18 项目36x135:狗狗陪护机器人模拟
1.6 编程中的抽象建模
1.6.1 项目28x107:电梯调度算法
1.6.2 项目28x108:由电梯调度算法了解编程思维
1.6.3 项目28x110:3D世界的编程模型
1.6.4 项目28x112:编程中的建模过程——乒乓球小游戏
1.6.5 项目28x114:编程中的建模过程——迷宫小游戏
1.6.6 项目28x115:编程中的建模过程——钢琴
1.6.7 项目28x125:编程中的建模过程——飞行的小鸟
1.6.8 项目28x126:编程中的建模过程——坦克大战
1.6.9 项目28x116:编程中的建模过程——跳一跳
1.6.10 项目28x117:复杂编程中的建模过程——电梯调度算法小游戏
1.6.11 项目34x123:生命游戏
1.6.12 项目34x124:复杂编程中的建模过程——生命游戏的制作
1.6.13 项目24x84:BlockBot小游戏介绍
1.6.14 项目24x95:复杂编程中的建模过程——BlockBot核心部分的制作
1.6.15 项目24x93:BlockBot小游戏——3D UI
1.6.16 项目24x94:BlockBot小游戏——2D UI
1.6.17 项目24i96:BlockBot小游戏——复杂UI设计
1.6.18 项目33x122:人力资源游戏
1.7 保存并分享你的作品
1.7.1 项目29x118:制作个人网站
1.7.2 项目23x83:创建课程包
……
中篇 编程理论
下篇 参考手册
附录
后记