• Stars
    star
    107
  • Rank 323,587 (Top 7 %)
  • Language
    C++
  • Created almost 8 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

简易游戏框架,整合D2D和Lua

CC Game Framework Project

参见:从零开始构建标准库 - 知乎专栏

实现一个游戏框架。

已嵌入物理引擎代码clib2d

已嵌入脚本操作系统代码clibparser

脚本操作系统

简介:语言为简化C语言,自制编译器(词法+语法+LR分析)、IR(基于寄存器)、虚拟机、GUI、VFS

原理:执行程序时,即时编译代码并执行所生成的二进制指令,按需加载。

main

main

介绍

架构是C/C++,渲染用DirectX,库用STL/ATL

从易到难,逐步推进。

使用的开源项目:

  • libqrencode-3.4.4
  • libevent-2.0.22
  • libcurl-7.53.1
  • dkjson(lua)

知乎文章列表

历程

第一阶段:搭好脚手架

项目架构:

  • base - 基础类(包含二维码库、libevent、libcurl)
  • ui - 界面逻辑
  • render - DX渲染逻辑
  • lua - lua代码
  • lua_ext - lua扩展(UI、Web)
  • script - lua脚本(UI、Scene)

整体思路:

  • 将窗口包装成Window类,借鉴自MFC中的相关内容
  • D2D1和DWrite的初始化
  • 实现图元工厂模式,统一管理DX资源,已实现色块和文字的渲染
  • 截取Window的特定消息,进行渲染

当前进度:

  • 已整合Lua 5.3.3
  • 实现背景渐变的效果
  • 实现定时器功能
  • 监听窗口消息
  • 实现场景切换功能
  • 实现绝对布局,可以自动调整大小
  • 整合WIC图片工厂模块
  • 整合二维码模块(libqrencode)
  • 监听鼠标事件
  • 添加线性布局
  • 添加按钮控件
  • 添加文本框控件
  • 添加表格布局
  • 添加HTTP组件,整合libevent和libcurl
  • 添加图片控件,接收base64编码的图片二进制指针
  • 添加lua版本的json解析
  • 完善HTTP组件(GET,POST)
  • 添加音频播放组件(libzplay)

TODO:

  • 完善一言界面
  • 添加更多控件
  • 添加更多渲染图元

第二阶段:移植应用

  • 游戏
    • 贪吃蛇
    • 2048(已完成)
    • 俄罗斯方块
  • 工具
    • 计算器(计划中)
    • JSON校验器
  • 网络
    • 一言(已完成)
    • 网易云音乐播放器(制作中)
  • 算法可视化
    • A*寻路(已完成)
    • Wireworld 元胞自动机(已完成)
    • 光线追踪(进行中)

第三阶段:图形学

光线追踪

2D物理引擎

物理引擎系列:

截图

主界面

main

画光系列!!!(算法优化)

main

main

main

main

光线追踪入门

1. 渐变

main

2. 深度

main

3. 材质

main

4. 反射

main

基本光源

1. 平行光

main

1. 平行光(带阴影)

main

2. 点光源(带阴影)

main

3. 聚光灯(带阴影)

main

4. 三原色(带阴影)

main

画光系列

(采用动态刷新法)

1. 抖动采样

main

2. 实体几何

main

3. 反射

main

画光系列(彩色)

1. 实体几何

main

main

2. 反射

main

main

3. 三原色

main

main

4. 折射

main

5. 折射(菲涅耳方程)

main

6. 折射(比尔-朗伯定律)

main

main

画光系列(文字)

main

main

第四阶段:模拟器

Bochs

脚本操作系统

进度:

  • 一切皆文件(抽象包括:文件、管道、队列、http客户端、http服务端、日志、进程、句柄、设备、音乐等)
  • Shell
  • 红黑树
  • GUI接口
  • 多窗口管理
  • IPC
  • HTTP
  • JSON
  • 文件权限
  • 多用户

More Repositories

1

clib2d

简单的2D物理引擎(CMake,OpenGL)
C++
181
star
2

MiniOS

Simple DIY OS
C
160
star
3

jMiniLang

用Kotlin实现的编译器和虚拟机,并在此基础上构建操作系统。
Kotlin
65
star
4

clibparser

General LR Parser(CMake,C++)
C++
63
star
5

PhysicsEngine

Physics Engine inspired by matter.js
C#
46
star
6

CParser

解析C语言的解释器
C++
46
star
7

tinix

forked from http://code.taobao.org/p/tinixdev/src/
C
44
star
8

learnstl

手撸STL库
C++
41
star
9

cliblisp

Simple Lisp VM(C++ 14)
C++
33
star
10

GraphEditor

图形编辑器(MFC VC6.0)
C++
29
star
11

CMiniLang

简易C语言编译器+虚拟机(CMake,C++14)
C++
26
star
12

clibalgserver

算法可视化网站
C++
21
star
13

Qlib2d

clib2d with lisp using Qt 5.11 (VS2017,x64)
C++
15
star
14

C-Compiler

MFC project with UIEditView, code author(陆晓春)
C++
12
star
15

Inject

API Hook Test for Taskmgr.exe
C
10
star
16

Spy

Spy - find window
C++
9
star
17

clibjs

JS-like script(C++)
JavaScript
8
star
18

CEval

四则运算器(C++)——设计模式练习
C++
7
star
19

jProlog

Simple prolog language using ANTLR, dealing with simple logic problems/maze. The key is FOREACH and FILTER.
Java
6
star
20

OnlineReader

Online txt reader. 在线小说阅读,自动导入txt。
JavaScript
6
star
21

ElevatorSystem

电梯调度系统(MFC) 2014.10
C++
4
star
22

clibalgserver_mac

算法可视化网站 - MAC版
C++
4
star
23

clibrpg

2D RPG Game with React(nodejs)
JavaScript
4
star
24

clibjson

简易JSON解析器(参考CMiniLang)
C++
4
star
25

CCGuiFoundation

C++设计的GUI框架
C++
4
star
26

MyScript

LISP解释器(with ANTLR), IDE=VS2017
C++
3
star
27

translate

数字转人民币翻译系统
Java
2
star
28

NewsApp

C#
2
star
29

Popstar

Popstar implementation(MFC)
C++
2
star
30

Seat

基于Express和GraphQL的在线座位安排网站
JavaScript
1
star
31

CppShell

C++实现的Shell,支持管道和流。
C++
1
star
32

ACM

ACM相关练习用代码兼笔记
JavaScript
1
star
33

SimuCPU

CPU Simulator
C#
1
star
34

WaveAnimation

Wave animation MFC application from tortoisesvn
C++
1
star
35

clibui

GUI with clibjs and direct2d
C++
1
star
36

SimpleConsole

Simple Functional Interpreter
C#
1
star
37

SimuCircult

C# 模拟系列
C#
1
star
38

clibproxy

online proxy
JavaScript
1
star
39

RemoteConsole

Android App with MaterialDrawer and MQTT.
Java
1
star