自己设计3D游戏引擎 - 简介(Crapell 3D Game engine design by self - Introduction)

3D游戏引擎系列三 笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,优快云社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:《手把手教你架构3D游戏引擎》电子工业出版社和《Unity3D实战核心技术详解》电子工业出版社等。优快云课程视频网址:http://edu.youkuaiyun.com/lecturer/144 笔者以前在游戏论坛担任过技术版主,以及在51CTO教育网,优快云教育网,泰课在线等教育网站担 阅读详情

名字Crapell取crazy spell 的缩写,纯个人设计,未基于其它任何开源引擎修改。c++语言实现。后续的重点将放在特效和AI上面。

        库及教程下载 : crapellengine_Lib.zip

        demo介绍 : http://twopointfive.blog.163.com/blog/static/90058543201472513244202/

 

        demo下载 :  DarkBattle3.5.7z

基本思想:

 

        模块设计准则:易用(高内聚),易移植(低耦合),容错,高效。

场景组织模仿flash影片剪辑的嵌套结构(也类似gamebryo的nif结构)。

ui部分类似torque的嵌套结构。

纹理、模型等资源使用智能指针自动释放,自动避免重复加载。

已实现功能:

一  渲染 

                Crapell游戏引擎设计Render

1,可以将整个或部分max场景导出到单一文件,也可导出到单独文件。包含关键帧动画、uv动画、粒子动画、骨骼动画、顶点动画、布料动画导出插件。插件使用非常方便,比如可以直接导出附着于骨骼或关键帧的布料模型和物理刚体模型。支持opengl 、d3d9两种渲染方式。avi贴图,粒子特效(灵活的发射器和粒子形状,路径,模型附着,模型发射,碰撞板),lod及变形修改器。后期延迟渲染可以对ui和场景使用独立的渲染通道。shader支持使用cg、glsl和hlsl三种语言(实现了一些例子:水纹,特效扭曲, hdr,流体雾,体积光,shdowmap阴影,motion blur)。

               Crapell游戏引擎设计UI

2,自制ui库各基本控件,控件可以分组嵌套管理。可以将任意控件组作为list(列表控件)及tree(树控件)的元素。类似torque的游戏内置简易界面编辑器。任意ui控件可以显示3d movie,比如滚条按钮可以3d动画显示。窗体可以贴到动画模型表面且可以响应输入。UI控件及界面管理绑定了lua脚本,方便脚本控制界面。放弃了之前scaleform使用。

3,支持activex控件web嵌入,场景多线程加载。

4,随机多层建筑物生成(带有亭子、门、城墙、柱子、走廊、护栏、楼梯、水池、广场、寻路系统等)。

                      随机树模型生成(分形加放样生成,模拟自然植物生长过程)。

                      随机人脸生成(捏脸系统)。

                      随机赛道、随机迷宫、地牢、地形生成。

                      各种随机生成系统方便节省资源以生成微型客户端。

5,加入了android平台显示。

二  物理

                 Crapell游戏引擎设计physic

1,未使用其它开源物理引擎。简单模拟rgidbody,使用joint和spring模拟软体。碰撞检测使用粗测加细测快速剔除,模拟速度已初步优化到可以实时应用。各物理模型的初始参数(比如位置、质量)都可以通过导出插件直接导出,无需程序设置即可直接参与物理模拟,使用方便。支持任意模型而不局限于凸体模拟。针对面数较大的模型做了特殊优化。

三  AI

                Crapell游戏引擎设计AI

1,目标驱动,astar,自动生成场景导航图。做了一个简易的war3地图编辑器。

2,lua引入 (目前使用luatinker),将基本的场景node导出为脚本物体,使得编写脚本就可以像做flash小游戏一样方便的制作3d小游戏。制作大型游戏ai仍以c++为主。

四  网络

                Crapell游戏引擎设计网络

1,服务器使用iocp ,以rpg功能为主。玩家可以创建多种类型小游戏任务房间,房间为开放式,游戏可以直接在rpg场景中进行,所以进入房间会被传送至房主所在地。其他玩家可观战。通讯协议分若干大类,小游戏内部消息使用命令方式,部分小游戏逻辑判断放在客户端主机上。

 

 

准实现功能:

一  渲染 

1,动态3d遮罩,修改器功能增强,增加场景物体实时碰撞响应,比如所有物体都可以被破坏。max中shader材质导出。

二  物理

1,稳定性优化,避免小概率的穿透。

三  AI

1,完整可玩度较高的demo。 新游戏房间可以在rpg游戏场景中的一台游戏机的屏幕上进行游戏。

2,ai编辑器。使用as 做游戏的脚本语言也许是不错的选择。 as具有很好的编辑调试工具,容错强,方便图形化编辑。

3,   研究中,清晰的结构、分层,switch case与状态机、行为树、数据驱动等。

四  编辑器

场景编辑器就是3dmax。ai编辑器。放弃原先使用win32api编写编辑器,改用自制的ui库实现各编辑器。

过场动画编辑器(使用脚本控制人物动作,编辑剧本式超长过场动画)

 

Crapell游戏引擎设计使用教程

 

 

附图:(模型多为网上下载)

 

 

图: 场景关键帧动画,实时阴影,八叉树,ui库

图: 粒子特效,使用自定义的关键帧和uv动画可以方便的制作各种游戏特效

图:  随风舞动的植被系统(随机生成或从plantmap产生)

图: 地形编辑器 纹理和高度画刷可选 可贴细节纹理加强效果

图:图为模拟每个水滴都可以激起涟漪的效果

图:简单物理碰撞模拟

图:随机生成树模型,可以单独设置每一分型层的多种参数,生成永不重复的异形树或花草。

图:导航图自动生成 目标驱动

更多截图见相册

自己写3D游戏引擎(Crapell)一 简介(make game engine by self - introduce) - twopointfive - twopointfive的博客

 

        

 

完整demo进行中  

        demo介绍 : http://twopointfive.blog.163.com/blog/static/90058543201472513244202/

 

        demo下载 :  DarkBattle3.5.zip

自己写游戏引擎一 功能简介(make game engine by self - introduce) - twopointfive - twopointfive的博客

 

 

自己写3D游戏引擎(Crapell)一 简介(make game engine by self - introduce) - twopointfive - twopointfive的博客

 自己写3D游戏引擎(Crapell)一 简介(make game engine by self - introduce) - twopointfive - twopointfive的博客

 
 

自己写3D游戏引擎(Crapell)一 简介(make game engine by self - introduce) - twopointfive - twopointfive的博客

自己写3D游戏引擎(Crapell)一 简介(make game engine by self - introduce) - twopointfive - twopointfive的博客

War3脚本引擎(Jass)执行函数分析 Jass是魔兽争霸3中比较重要的一个部分,下面资料通过逆向分析Jass执行脚本期间的一些逻辑和函数。 阅读详情

相关推荐

个人设计3d游戏引擎crapell

个人设计的3d游戏引擎crapell的sdk(头文件和库)。支持opengl和d3d,带可执行文件。使用自定义文件格式。详见http://twopointfive.blog.163.com/blog/static/9005854320124119382392/

游戏引擎设计 - 渲染(Crapell Game Engine Design - graphic)

     Crapell游戏引擎设计简介            可以将整个或部分max场景导出到单一文件,也可导出到单独文件。包含关键帧动画、uv动画、粒子动画、骨骼动画、顶点动画导出插件。c++ opengl 、d3d9两种渲染方式。avi贴图,粒子特效(灵活的发射器和粒子形状,路径,模型附着,模型发射,碰撞板),lod及变形修改器。后期延迟渲染可以对ui和场景使用独立的渲染通...

twopointfive的专栏 1862

3d-fps-game:无需任何游戏引擎即可制作的3D第一人称射击游戏

3D第一人称射击游戏 这是我正在上课的一个项目。 目前正在开发中。 请等待它完成。 资料下载 由于该项目仍在开发中,因此没有任何二进制发行版。 但是,如果您想尝试一下,请尝试从源代码构建它。 您可以在找到源代码。 发牌 该游戏及其源代码均受。

游戏引擎设计 - 物理(Crapell Game Engine Design - physic)

游戏引擎设计 - 物理(Crapell Game Engine Design - physic)

twopointfive的专栏 2768

3D Game Engine Design, Second Edition

这本书其实应该算是3D Game Engine Architecture Engineering的第二版,因为Architecture是以wild magic3.0来讲的,而Design 2nd是针对4.0。由于3.0是针对fixed function来设计的,所以当你以shader为基础来设计引擎时,3.0里的设计思路会严重的误导你!!另外和Architecture相比,Design 2nd的内容也更加丰满,删除了原来很多太过基础和琐碎的东西,新增了很多碰撞检测方面的章节。可以说这本书是3d游戏引擎书籍中的佼佼者。

5G初始注册流程详解(2)-Registration Request

1:了解注册的本质,5G终端为什么要注册? 2:SUCI,SUPI,5G-GUTI的区别? 3:为什么会有COMPLETE REGISTRATION REQUEST呢?

weixin_53220301的博客 3794

3D Game Engine Design, Second Edition --- Go to Get it !

         那么多年了,国内的出版商终于发行了一本像样的关于游戏引擎设计的书。以往的《game programming gems》和《GPU Gems》虽然是好书,可惜被翻译之后,大打折扣。     这本书其实应该算是3D Game Engine Architecture Engineering的第二版,因为Architecture是以wild magic3.0来讲的,而Desi

Clayman的专栏 7910

数控弯管机xyz转换ybc的算法_数控弯管机技术的更新和应用.pdf

您所在位置:网站首页 > 海量文档&nbsp>&nbsp汽车/机械/制造&nbsp>&nbsp机械/模具设计数控弯管机技术的更新和应用.pdf3页本文档一共被下载:次,您可全文免费在线阅读后下载本文档。 下载提示1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。2.该文档所...

weixin_31493101的博客 1521

游戏引擎设计一界面库(Crapell Game Engine Design - UI lib)

Crapell游戏引擎 从头实现的UI库,功能基本完善,使用方便,主要适用于游戏界面,完全自定义外观

twopointfive的专栏 1158

《童虎学习笔记》5分钟用Keepalived搭建MySQL高可用实现虚ip自动漂移

1

tonghu_note的博客 5618

A Side Scan Sonar Image Denoising Algorithm Based on Compound of Fuzzy Weighted Average and Kalman F

Abstract 水下侧扫声纳图像的噪声来源:高斯噪声、脉冲、斑点噪声。 传统方法只能移除部分噪声,并且去噪后容易造成细节模糊。 本文在考虑到噪声的随机性以后,提出一种融合了模糊加权平均和卡尔曼滤波的去噪方法。 在最大化保留图像细节的基础上,同时去除高斯噪声和脉冲噪声 一.Introduction 由于海底环境和声波自身干涉的影响,声纳图像生成的图像难免会有噪点。声纳采集的图像通常会有高斯噪声、脉...

qq_44516871的博客 927

3D Game Engine Design

Chapter 2 basic mathematics 1. matrix   1)base symmetric matrix: M = M'; skew-symmetric matrix: M=-M' 2)scaling   scaling matrix:diagonal matrix D = diag{d1,...,dn} for...

weixin_30420305的博客 180

一站式讲解Wireshark网络抓包分析的若干场景、过滤条件及分析方法

本文详细讲解常用的抓包工具、抓包分析的网络场景、分析抓包时的多种过滤条件以及如何结合常用的协议去分析排查问题,给大家提供一个借鉴或参考。

dvlinker的技术专栏 5万+

零基础制作物理引擎

上篇其实有重力,但是重力是经过重心,可以把物体看出质点,问题就变得简单,经过重心只产生线速度,不产生角速度。这篇文章的力量其实是指:力(Force)和冲量(Impulse),不一定过重心。边写引擎过程中,边补习牛顿经典力学体系,但是依然记得大学时候物理老师反复强调:“牛顿错了,牛顿错了,牛顿那一套只是狭义相对论在低速下的近似表现”。所以顺带又科普了一下爱因斯坦那一套东西,后来发现,写个物理引擎用牛顿足矣。= =!

qq_43505188的博客 948

优化相机姿态和三维点云的Bundle Adjustment算法及其编程实现

重投影误差是指将优化后的相机姿态和三维点云投影到图像平面上,与对应的图像特征点之间的距离。Bundle Adjustment(捆绑调整)是一种用于同时优化相机姿态和三维点云的算法,它可以提高三维重建和相机定位的精度。下面是一个简单的Python示例代码,演示了如何使用Bundle Adjustment算法优化相机姿态和三维点云的参数。通过以上步骤,Bundle Adjustment算法可以不断地优化相机姿态和三维点云的参数,从而提高重建和定位的精度。Bundle Adjustment算法的编程实现。

CyberXZ的博客 740

【科研数据获取】根据Excel表个中的企业/公司信息批量获取经纬度坐标,并进行地图可视化

批量获取企业/公司的经纬度坐标,并进行地图可视化1 需求2 实现途径3 需求逐步实现 1 需求 在做项目的时候,老板或者项目答辩时候甲方最喜欢看到的就是可视化结果,尤其是涉及到地图可视化。很多时候会遇到企业/公司的数据,想要做地图可视化,必不可少的就是要获取它们具体地址:第一种就是像查户口一样精准一下具体的城镇街道,还有一种就是经纬度信息,前一种属于文字内容往往用于管理方面,第二种数字信息多用于数据处理与分析。 2 实现途径 获取地理信息数据,自然需要使用到地图的功能,这里直接采用百度地图的拾取坐标系统,

lys_828的博客 2337

构建你自己的 2D 游戏引擎(三)

在大多数 2D 游戏中,定制的图像被用来表现几乎所有的物体,包括人物、背景,甚至是动画。因此,对图像操作的适当支持是 2D 游戏引擎的核心。游戏通常在三个不同的阶段处理图像:加载、渲染和卸载。加载是将图像从网络服务器的硬盘读取到客户端的系统主内存中,并在图形子系统中进行处理和存储。渲染发生在游戏过程中,当载入的图像被连续绘制以代表各自的游戏对象。卸载发生在游戏不再需要某个图像,并且相关资源被回收以备将来使用的时候。

龙哥盟 2066

智能硬件产品:做好一款电子硬件产品,工具必不可少

上到战略规划,中至运营策略,下至人性洞察,。最初做产品时,笔者从一开始就陷入到了对工具的痴迷,包括:PS、AutoCAD、PROE、犀牛、Axure、Keyshot、Altium……大概将 2 个多月的时间和精力都消耗在了学习使用工具上。通过工具的运用也确实提高了工作效率,在仅有创意的前提下通过灵活运用工具,一年内便成功申请了多个实用新型专利、设计了多款产品的高保真原型图等。正在上传…重新上传取消。

产品线负责人 1442

自己动手写物理引擎(零)

其实在很久以前就用过别人的物理引擎了,可是这些引擎的功能不满足我的需求,比如说不支持流体的运动,以及实现把一个物体切割成两部分等,还可以制造燃烧,爆炸等效果,别人的物理引擎都没有。所以我决定自己先用python写一款物理引擎,后面再写成JavaScript来实现网页上的效果。本文的编号是零,意思是这是写物理引擎前的准备工作。

Admibrill的博客 707

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

量化误差如何导致信号失真?

**摘要:**量化误差是指信号量化过程中原始值与量化值之间的差值(如1.23V→1.2V,误差0.03V)。这种误差会导致信号失真,表现为"台阶状"波形和叠加的随机噪声(量化噪声)。量化噪声具有随机性、幅度与量化精度相关等特性,是数字信号处理中的固有现象。典型案例如低比特率音频的"沙沙声"和低色阶图像的色带效应。其本质是量化过程丢失信号细节,可用"量化拉台阶,误差变噪声"概括。(149字)

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 1808

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

如何从零开始用 C++ 开发一款游戏引擎?

游戏开发一直很能激励学生学习高级计算机科学。可能有些人认为游戏是孩子们喜欢的,但对于标准的计算机科学课程来说,游戏开发其实是少数几个能利用当中所有知识的领域。游戏开发涉及标准计算机科学课程中的诸多内容根据游戏的性质,你可能还需要深入到更具体的专业,比如分布式系统或人机交互。游戏开发是一项严肃的工作,是助力计算机科学理念学习的有力工具。本文将详细介绍使用C++创建一款简单游戏引擎所

致力于C语言C++知识分享! 8409

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

一个人独立开发 3D 游戏引擎可能吗?

作者:孙志超链接:https://www.zhihu.com/question/24733255/answer/42000966来源:知乎著作权归作者所有,转载请联系作者获得授权。 当然可以,但难道有个引擎,就可以做出真正商业化的游戏么?而且国产游戏大部分是网游啊。几年前的老文——《一个人的服务器端》(只是为了说明游戏开发难度,不是针对题主问题。) 技术准备 能够做这个MMO的触...

weixin_34194359的博客 789

3D游戏引擎剖析

原文作者:Jake Simpson 译者: 向海 第1部分: 游戏引擎介绍, 渲染和构造3D世界 介绍    自Doom游戏时代以来我们已经走了很远。 DOOM不只是一款伟大的游戏,它同时也开创了一种新的游戏编程模式: 游戏 "引擎"。 这种模块化,可伸缩和扩展的设计观念可以让游戏玩家和程序设计者深入到游戏核心,用新的模型,场景和声音创造新的游戏, 或向已有的游戏素材中添加新的...

weixin_34352005的博客 384

Elements Of A Game Engine - 3D游戏引擎原理

3D Engine 的设计架构作者:Luke Hodorowicz翻译:乐晨光 (2001/9/28)本人对3D也不甚了解,译文动机一则是内容所致兴致昂然,二则锻炼英译中技能。由本人水平及经验有限,文中绝对不乏大量误解与误译,亦恳请读者指出,得以一同提高。佳文须共赏,也欢迎大家自由转载 :)Introduction (简介)让咱们谈谈你如何撰写一份提供优雅性能的3D引擎。你的引擎需要提供的包括:曲

moony_blue的专栏 1720

手把手教你架构3D游戏引擎

在这里将多年游戏研发经验的积累写成一本书奉献给读者,目前已经开始预售,网址: http://www.broadview.com.cn/article/70 该书主要是将游戏中经常使用的技术给大家做了一个总结,书中的代码可以直接应用到项目开发中。

海洋个人博客 1万+
下一篇: 独立游戏demo-FoodStall3.0
娄磊lorry
博客等级 码龄19年 95粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值