查看: 12233|回复: 66

[胡扯] How to写一个全新的rpg maker

[复制链接]
梦石
1
星屑
24088
在线时间
3339 小时
注册时间
2011-7-8
回帖
3862

开拓者

发表于 2021-7-29 16:56:39 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
看到大家贡献了这么多的runtime,就想了解一下写这个需要多少知识,然后我发现了这个课程:

Create a 2D Game Engine with C++ & Lua
https://courses.pikuma.com/courses/2dgameengine

共有如下几大章,每章里还有若干小节,果然很难啊……

1 Introduction
2 Libraries & Dependencies
3 Displaying the Game Window
4 Rendering SDL Objects
5 Fixing the Game Time Step
6 Logger
7 Files & Folder Structure
8 Organizing Game Objects
9 ECS Design
10 ECS Implementation
11 Creating Entities & Components
12 Creating Systems
13 Managing Assets
14 Animation System
15 Collision System
16 Killing Entities
17 Event System
18 Other Useful Components & Systems
19 Tagging & Grouping Entities
20 Data-Oriented Design
21 Displaying True-Type Fonts
22 Dear ImGui
23 Culling & Map Control
24 Lua Scripting
25 Next Steps
26 Bonus: The Map Editor
27 Moving Forward

众筹$29.99学费

评分

参与人数 2赞 +2 收起 理由
域外 + 1 非常有帮助!感谢分享
哇哇哇啊叭叭 + 1 仰止

查看全部评分

熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
梦石
0
星屑
701
在线时间
511 小时
注册时间
2012-4-8
回帖
193
发表于 2021-7-29 21:28:01 | 显示全部楼层
一看就是个大工程,可能需要一个经验丰富的团队开发很长时间。

点评

论坛上那些第三方runtime都是个人开发的,恐怖如斯  发表于 2021-7-30 02:26
武侠|养成|战棋游戏《以武证道》头秃开发中...
开发日记在此
回复

使用道具 举报

梦石
2
星屑
13779
在线时间
2319 小时
注册时间
2011-6-4
回帖
586
发表于 2021-7-30 02:02:26 | 显示全部楼层
我记得B站有个叫红色激情的Up,用GMS仿制了一个RMMV https://b23.tv/GHqjZ4

点评

完了已经被主题曲洗脑……  发表于 2021-7-30 02:09
BUG反馈请加QQ 529283039
水友群 917854767

回复

使用道具 举报

梦石
0
星屑
1282
在线时间
257 小时
注册时间
2021-2-16
回帖
229
发表于 2021-7-30 08:24:42 | 显示全部楼层
这个课程之前的名字叫《Fundamentals of 2D Game Engines with C++ SDL and Lua》,曾在udemy上卖9.9$(该课程在udemy上貌似下架了)。现在换个名字卖的这么贵。。。当然,也许作者把课程内容优化的更好了。

点评

切进网页发现已经涨到$39.99了,这就是理财课程吗?  发表于 2021-11-14 01:56
通货膨胀嘛,要是有免费的就好了(  发表于 2021-7-30 09:08
回复

使用道具 举报

梦石
1
星屑
24088
在线时间
3339 小时
注册时间
2011-7-8
回帖
3862

开拓者

 楼主| 发表于 2021-8-1 03:32:24 | 显示全部楼层
本帖最后由 guoxiaomi 于 2021-8-1 03:44 编辑

成功写好了0.1个rpgmaker:
  1. #include <rice/rice.hpp>
  2. #include <iostream>

  3. using namespace Rice;

  4. extern "C" void Init_test()
  5. {
  6.     Class rb_cTest = define_class("Test");
  7. }

  8. int main()
  9. {
  10.     std::cout << "Hello, rice" << std::endl;
  11.     ruby_init();
  12.     Init_test();
  13.     rb_eval_string("p Test");
  14.     std::cout << "-- end --" << std::endl;
  15.     return ruby_cleanup(0);
  16. }
复制代码
一顿编译后得到test.exe,执行结果:
  1. Hello, rice
  2. Test
  3. -- end --
复制代码
,范例: test.zip (2.45 MB, 下载次数: 4) 。
现在只要把SDL加进去
参考资料:
1. rice:https://jasonroelofs.com/rice/4.x/tutorial.html
2. embed ruby:https://silverhammermba.github.io/emberb/embed

编译方法是用rice在mingw64里编译出test.o文件,然后把最终g++编译.so文件的那部分内容改为输出exe就OK了:
  1. g++ -o test.exe test.o -L. -LC:/Ruby30-x64/lib -L. -pipe -s -fstack-protector-strong -pipe -s -fstack-protector-strong -Wl,--enable-auto-image-base,--enable-auto-import test-x64-mingw32.def -m64 -static -Wl,-Bdynamic -lx64-msvcrt-ruby300 -Wl,-Bstatic -lstdc++ -lshell32 -lws2_32 -liphlpapi -limagehlp -lshlwapi
复制代码
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复

使用道具 举报

梦石
0
星屑
8003
在线时间
1184 小时
注册时间
2007-7-29
回帖
2014
发表于 2021-8-1 14:31:55 | 显示全部楼层
guoxiaomi 发表于 2021-8-1 03:32
成功写好了0.1个rpgmaker:
一顿编译后得到test.exe,执行结果:,范例:。
现在只要把SDL加进去

真是怀念的代码……
话说为了ruby用了rice么?

点评

你对这一套有啥经验嘛,指导一下下  发表于 2021-8-1 14:37
这样就可以写个mv出来了(x  发表于 2021-8-1 14:36
我也是胡乱搞的,js的话找到了这个:https://github.com/ftk/quickjspp  发表于 2021-8-1 14:33
回复

使用道具 举报

梦石
1
星屑
24088
在线时间
3339 小时
注册时间
2011-7-8
回帖
3862

开拓者

 楼主| 发表于 2021-8-1 22:07:11 | 显示全部楼层
本帖最后由 guoxiaomi 于 2021-8-1 22:28 编辑

SDL也加进去了!
  1. #include <rice/rice.hpp>
  2. #include <SDL2/SDL.h>
  3. #include <iostream>
  4. #include <windows.h>

  5. using namespace Rice;

  6. void Init_test()
  7. {
  8.     Class rb_cTest = define_class("Test");
  9. }

  10. int main(int argc, char *argv[])
  11. {
  12.     ::ShowWindow(::GetConsoleWindow(), SW_HIDE);

  13.     std::cout << "Hello, rice" << std::endl;
  14.     SDL_Window *window = SDL_CreateWindow("demo", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_SHOWN);
  15.     SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);

  16.     ruby_init();
  17.     Init_test();
  18.     rb_eval_string("sleep 10");
  19.     SDL_DestroyRenderer(renderer);
  20.     SDL_DestroyWindow(window);
  21.     std::cout << "-- end --" << std::endl;
  22.     return ruby_cleanup(0);
  23. }
复制代码
一顿编译后得到: test2.zip (2.86 MB, 下载次数: 10)
[fold=make]
  1. g++ -I. -I/C/Ruby30-x64/include/ruby-3.0.0/x64-mingw32 -I/C/Ruby30-x64/include/ruby-3.0.0/ruby/backward -I/C/Ruby30-x64/include/ruby-3.0.0 -I. -IC:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/rice-4.0.2/include -I/home/guoxm/SDL2-2.0.14/x86_64-w64-mingw32/include -D__USE_MINGW_ANSI_STDIO=1 -DFD_SETSIZE=2048 -D_WIN32_WINNT=0x0600 -D__MINGW_USE_VC2005_COMPAT -D_FILE_OFFSET_BITS=64 -march=x86-64 -mtune=generic -O2 -pipe -std=c++17 -m64 -o test.o -c test.cpp
  2. rm -f test.exe
  3. g++ -o test.exe test.o -L. -L/C/Ruby30-x64/lib -L/home/guoxm/SDL2-2.0.14/x86_64-w64-mingw32/lib -L. -pipe -s -fstack-protector-strong -m64 -Wl,-Bdynamic -lmingw32 -lx64-msvcrt-ruby300 -lSDL2main -lSDL2 -Wl,-Bstatic -lstdc++  -lshell32 -lws2_32 -liphlpapi -limagehlp -lshlwapi -static
复制代码
[/fold]
接下来写个事件循环就完事了
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复

使用道具 举报

梦石
1
星屑
24088
在线时间
3339 小时
注册时间
2011-7-8
回帖
3862

开拓者

 楼主| 发表于 2021-8-2 17:53:57 | 显示全部楼层
本帖最后由 guoxiaomi 于 2021-8-2 17:56 编辑

v0.0.1版发布成功!话说为什么要带这么多的dll…… lib.zip (4.54 MB, 下载次数: 4)
https://gitee.com/rmxp/sdlrgss/releases/v0.0.1
photo_2021-08-02_17-42-31.jpg
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复

使用道具 举报

梦石
0
星屑
12824
在线时间
1010 小时
注册时间
2019-11-5
回帖
2329

极短27参与极短25参与极短24参与

发表于 2021-8-2 19:46:07 | 显示全部楼层

  这个水贴好硬核。突然有种想买的冲动...如果这是一贴广告的话,就更硬了

  什么是runtime?百度上的翻译感觉完全翻成了另一种外语


点评

QAQ.。考虑考虑卖个腰子买课程,还能剩下不少钱去南方旅个游  发表于 2021-8-2 21:57
就是“运行时”,我也不知道咋解释但是大家都叫这个runtime  发表于 2021-8-2 19:56
其实我没买课,就瞎蒙着写的,你赶紧买了把视频给大家分享一下~  发表于 2021-8-2 19:56
风继续吹,不忍远离。年少轻狂,眼神明亮,最好的年纪,最好的时光。希望岁月是一场春梦
回复

使用道具 举报

梦石
1
星屑
24088
在线时间
3339 小时
注册时间
2011-7-8
回帖
3862

开拓者

 楼主| 发表于 2021-8-3 23:26:26 | 显示全部楼层
本帖最后由 guoxiaomi 于 2021-8-4 00:22 编辑

写了个draw_text:
跟右值引用干了一晚上,目前使用了全局变量,情绪非常稳定
20210731-rice-v0.0.2.zip (4.15 MB, 下载次数: 8)
Screenshot 2021-08-03 232359.png
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部