kys-cpp

这是一个以SDL2为基础实现的2D游戏引擎。

基本按照当代游戏引擎的思路实现,但是没有使用回调,因为回调会增加初学者的使用难度。

同时相当于提供了一个使用该引擎制作DOS游戏《金庸群侠传》移植版的范例。

可以使用Visual Studio编译。

架构的简单说明

公用类

Engine封装了一套SDL2的主要实现,主要取自TinyPot。

File是一些读取,写入函数。包含几个简化程序的模板函数。

Save中对所有数据进行了封装,可以较为方便地调用。

TextureManger是一个纹理管理器,因为《金庸群侠传》的贴图是含偏移设置的,故有些特殊的地方。

Audio是音频类,基于Bass,可以播放mid,mp3,wav等。

Element

Element是游戏中的基本执行类,包含5个重要的虚函数:backRun,draw,dealEvent,onEnter,onExit。对应在背景中执行,如何画自身,如何处理事件,进入时的处理,退出时的处理。一般来说,衍生类应重写这些函数。

其中每个节点可以包含数个子节点,在绘图时子节点也会被自动一一绘出。需注意在画自身的部分不需要处理子节点,除非有特殊的需要。

存在一个全局的的Element栈root(实际是std::vector),引擎会从下到上依次画出每个Element。Element类有一个占满全屏的属性,表示这个类将占用全部的屏幕,因此引擎在绘制的时候,会仅找出最靠上的含有该属性的节点,并从这里开始往上画。

创建一个节点,并调用run过程即可运行此节点,注意使用run执行的节点是完全独占的,其子节点也会有事件响应。如果需要退出当前节点,在适当的地方使用setExit(true)即可,但是子节点调用是无效的,除非拥有当前运行节点的指针。

run过程的参数为一个布尔值,如果为true则会被加入到root并进行绘制,如果为false则只运行不参与绘制。但是很多节点的draw过程是空的,即使放到root中也不会参与绘制,实际利用了这一特性的仅有显示人物对话的部分。

run过程会返回一个函数值,可以利用进行一些判断,例如菜单的选择。

自己创建的节点通常需要自己销毁,但是要注意如果某个节点在其他节点的Child当中,则会被自动销毁,请注意这些问题。

部分节点使用了单例,这些节点请留给程序运行结束自动销毁。

请不要让子节点出现递归包含,这样会迅速消耗掉所有资源。

使用到的其他开发库

除BASS和BASSMIDI为闭源,但可以免费用于非商业项目之外,其他均为开源工程。

编译minizip时,需要手动添加minishared.h和minishared.c,并在其中的函数声明中添加导出至dll的标记。

授权

Special thanks to WangZi, NiBa, HuaKaiYeLuo, XiaoWu, LiuYunFeiYue, ZhenZhengDeQiangQiang, SB250 and ICE.

The source codes are distributed under zlib license, with two additional clauses.

Full right of the codes is granted if they are used in non-KYS related games.

If the codes are used in KYS related games, the game itself shall not involve any sort of profit making aspect.

A title "Powered by www.dawuxia.net" is advised to be displayed on the welcome screen.

sdl 游戏引擎c语言,kys-cpp: 《金庸群侠传》C++复刻版,这是一个以SDL2为基础实现的2D游戏引擎。同时相当于提供了一个使用该引擎制作DOS游戏《金庸群侠传》移植版的范例。...相关推荐

  1. C++开源游戏推荐,《金庸群侠传》复刻版和3D重制版

    声明:项目非本人原创,仅仅分享链接! 声明:项目非本人原创,仅仅分享链接! 声明:项目非本人原创,仅仅分享链接! 铁血丹心论坛 https://www.dawuxia.net/forum.phphtt ...

  2. 金庸群侠传 Windows版:用 Object Pascal 和 SDL 实现的 DOS 游戏《金庸群侠传》的重制版

    金庸群侠传 Windows版:用 Object Pascal 和 SDL 实现的 DOS 游戏<金庸群侠传>的重制版. 原 DOS 下面的经典游戏<金庸群侠传>pascal 复 ...

  3. unity3d 剧情制作_游戏设计作品集干货:跨专业如何入门 Unity3D 游戏引擎?

    游戏设计作品集,涉及游戏策划与玩法.游戏美术与Unity3D游戏引擎等内容的学习. 之前克瑞斯介绍过了游戏策划与游戏美术,本期再详细聊下什么是Unity3D游戏引擎,以及学习Unity3D游戏引擎的详 ...

  4. 基于SDL的打字练习游戏,C语言

    基于SDL的打字练习游戏,C语言 GitHub项目链接 GitHub项目链接 源码已开源

  5. c语言小游戏vc,C语言探索之旅:第一个C语言小游戏

    C语言探索之旅:第一个C语言小游戏-1.jpg (37.05 KB, 下载次数: 0) 2018-10-8 19:23 上传 内容简介 1.课程纲领 2.第一部分第八课:第一个C语言小游戏 3.第一部 ...

  6. python简单代码制作小游戏-用Python设计一个经典小游戏

    本文主要介绍如何用Python设计一个经典小游戏:猜大小. 在这个游戏中,将用到前面我介绍过的所有内容:变量的使用.参数传递.函数设计.条件控制和循环等,做个整体的总结和复习. 游戏规则: 初始本金是 ...

  7. 重发老文:DOS游戏编程二十一条

    这是我1999年写的一篇文章了,应该说,经过了这么多年的进步,文中很多与DOS相关的内容,现在看起来已经不合时宜了,不过,我认为里面的一些理念,到任何时候都不会过时. 最近看到tr110223网友的& ...

  8. DOS游戏编程二十一条

    我在一家游戏公司多年,现就自己的编程经验谈一点体会,希望能对大家有点帮助,本文中所有例子均在WATCOM C/C++ 10.6下调试通过. 1.找一种好的编程语言: 当然,游戏可以用任何语言编写,这是 ...

  9. dos模拟器存档_互联网档案馆最近收录了几千款DOS游戏

    老游戏不死,只是逐渐凋零. 互联网档案馆(Internet Archive)最近向他们的数据库上传了2500款MS-DOS游戏. MS-DOS在今天已经是一个历史名词.这一诞生于20世纪80年代.曾经 ...

最新文章

  1. linux 软件安装
  2. 程序员的视角:java GC
  3. web release (bat tool)
  4. Hadoop完全分布式环境搭建(三节点)
  5. 从创建数据库到备份恢复还原详解
  6. 弹出窗口里面的子页面控制父页面的解决办法
  7. webrender 查看是否开启_想要体验极致顺滑的网页加载体验?手动开启Firefox WebRender渲染引擎...
  8. Android之如何判断当前是阿拉伯布局的方法
  9. 成为java gc专家_成为JavaGC专家上(2)—如何监控Java垃圾回收机制
  10. 低代码已至,传统开发方式是否还有必要?
  11. 微软按月收费桌面计划,Win 10 将变成 Win 365?
  12. 英国航空系统周末故障,可能会损失掉全年将近 3% 的利润
  13. c语言后置 运算符,98-递增运算符的前置和后置形式
  14. 编程之美---电梯调度算法
  15. C语言文件读写常用函数
  16. 线性布局LinearLayout(二)小练习
  17. Google Code 开源项目
  18. 网站优化nofollow标签的作用,如何加nofollow标签
  19. python——今天是第几天
  20. RTX 3060 快速配置GPU版本tensorflow

热门文章

  1. 结题答辩常见问题及作答
  2. 【FiddlerScript】利用Fiddler中的FiddlerScript解除4399小游戏的防沉迷
  3. matlab simulink响应谱计算
  4. 赠与今年的大学毕业生(1932年6月27日) ------ 胡适大师
  5. 前端开发UI框架选择---帮你解决忧愁
  6. 引进软件国际标准,培养高级软件人才
  7. QQ绑定手机就安全???——————【Badboy】
  8. 基于Windows Server 2008的DNS服务器配置
  9. vue中使用js进行AES加密及解密(含密钥和iv偏移量)、以及HMAC-SHA256加密方法对于签名加密的使用
  10. 利用PhotoScan生成无人机高精度正摄影像(可下载)