设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
123
返回列表 发新帖
楼主: guoxiaomi
打印 上一主题 下一主题

[讨论] 设计一个简单的游戏引擎

[复制链接]

Lv4.逐梦者

梦石
0
星屑
14591
在线时间
2194 小时
注册时间
2019-1-24
帖子
1123

R考场第七期纪念奖

21
发表于 2023-2-19 20:11:05 | 只看该作者
这个RGM能跨平台打包安卓吗?

点评

存在理论上的可能,现在还是先把windows做好  发表于 2023-3-1 00:00
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2309
在线时间
123 小时
注册时间
2017-2-26
帖子
36
22
发表于 2023-2-28 23:39:36 | 只看该作者
控帧改为等待信号实现

写了个demo,验证windows下的WaitableTimer和STL sleep_for,结果令人很意外很失望。

源码:
  1. #include <Windows.h>
  2. #include <stdio.h>
  3. #include <thread>
  4. #include "SDL.h"

  5. int main(int argc, char* argv[])
  6. {
  7.     uint64_t frequency = SDL_GetPerformanceFrequency();
  8. #if 1
  9.     HANDLE waitable_timer = CreateWaitableTimerW(
  10.         nullptr,
  11.         TRUE,
  12.         nullptr);
  13.     while (waitable_timer)
  14.     {
  15.         uint64_t before = SDL_GetPerformanceCounter();

  16.         LARGE_INTEGER delay;
  17.         delay.QuadPart = -1E7 / 60;
  18.         SetWaitableTimer(
  19.             waitable_timer,
  20.             &delay,
  21.             0, nullptr, nullptr, FALSE
  22.         );
  23.         WaitForSingleObject(waitable_timer, INFINITE);

  24.         uint64_t after = SDL_GetPerformanceCounter();
  25.         printf("call: %lld, real: %llu, error: %lld\n", -delay.QuadPart, after - before, llround(0.L + after - before + delay.QuadPart));
  26.     }
  27. #else
  28.     while (true)
  29.     {
  30.         uint64_t before = SDL_GetPerformanceCounter();

  31.         long long delay = 1E7 / 60;
  32.         std::this_thread::sleep_for(std::chrono::nanoseconds(delay * 100));

  33.         uint64_t after = SDL_GetPerformanceCounter();
  34.         printf("call: %lld, real: %llu, error: %lld\n", delay, after - before, llround(0.L + after - before - delay));
  35.     }
  36. #endif
  37.     return 0;
  38. }
复制代码


运行结果:
WaitableTimer



STL sleep_for



结论:
WaitableTimer的精度实际上和STL sleep_for一样,都是15ms左右(具体数字取决于操作系统的调度时间片)的粒度。

P.S.:github不好发图,就借楼发了

评分

参与人数 1+1 收起 理由
guoxiaomi + 1 我很赞同

查看全部评分

RM水友群号   917854767  欢迎加入
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
23994
在线时间
3339 小时
注册时间
2011-7-8
帖子
3926

开拓者

23
 楼主| 发表于 2023-4-4 20:23:22 | 只看该作者
本帖最后由 guoxiaomi 于 2023-4-4 20:24 编辑

经过一段时间的开发,RGModern的1.0.0候选版本发布了。提供了范例工程,文档还在完善中……

点击下载 完整测试工程,或https下载

工程内部的Game.exe可以代替原版Game.exe使用,Gamew.exe则内嵌了加密的Data文件夹,用来测试数据加密的效果。

项目已开源,github仓库地址:https://github.com/gxm11/RGModern
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-16 15:26

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表