楼主: ⑨姐姐

[原创发布] 【RGD】使用 DirectX 驱动的 RMVA Game.exe(v1.6)

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

开拓者

发表于 2018-5-5 21:49:30 | 显示全部楼层
系统是win10x64

同17楼,工程是空的工程然后加上了几个小事件,已经替换调了301,修改了Game.ini,然后放着不动大概10s左右就卡住了,然后程序崩溃。

我又把 Game.exe 换成默认的。更换之后,现在无论是双击exe,或者工程打开后F12运行,都会提示没有安装VL Gothic 字体

点评

VL Gothic字体可能是英文版RM那个Game的默认字体吧,可以设置Font.default_name应该就解决了。  发表于 2018-5-7 08:24
可以试试多次播放动画,我猜测是载入文件拖慢了速度……  发表于 2018-5-7 08:23
目测应该甩锅给这GT520M的显卡  发表于 2018-5-7 00:38
天气渐变闪烁都OK,但放动画的时候,帧率会下降到45然后很快恢复,用的是默认的放射线动画  发表于 2018-5-7 00:35
辛苦了姐姐⑨~之前的崩溃已经OK了,测试了一下分辨率扩张,效果令人窒息!  发表于 2018-5-7 00:28
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复

使用道具 举报

梦石
0
星屑
2310
在线时间
5539 小时
注册时间
2011-1-10
回帖
6353

青铜编剧史诗剧作家剧作品鉴家

发表于 2018-5-5 22:16:22 | 显示全部楼层
感觉拿来做黄油会有非同寻常的效果
回复

使用道具 举报

梦石
1
星屑
22083
在线时间
4885 小时
注册时间
2014-12-22
回帖
1509

开拓者

发表于 2018-5-5 22:41:35 | 显示全部楼层
还有法线?这有点太强了吧
以后开新坑的时候会试试~(旧坑因为塞了很多脚本搞不动兼容问题还是不动了XD
回复

使用道具 举报

梦石
0
星屑
1902
在线时间
959 小时
注册时间
2012-7-5
回帖
225
发表于 2018-5-6 10:34:42 | 显示全部楼层
本帖最后由 浮云半仙 于 2018-5-6 10:49 编辑

(火钳后排刘明)
在vs里面改下设置,工具链用比如msvc14_xp编译出来的可以在winxp上跑
d3d⑨应该是是需要经常check capability看看显卡+运行时是否资瓷某个接口,否则大概就会炸?(d3d11大法好(逃

点评

感谢建议  发表于 2018-5-6 10:54
tan(pi/2)
回复

使用道具 举报

梦石
0
星屑
6841
在线时间
902 小时
注册时间
2017-9-27
回帖
16
发表于 2018-5-6 11:00:49 | 显示全部楼层
碉堡了 划时代的产物
回复

使用道具 举报

梦石
1
星屑
23301
在线时间
9568 小时
注册时间
2012-6-19
回帖
7021

开拓者短篇九导演组冠军

发表于 2018-5-6 13:33:06 | 显示全部楼层
期望有更新日志……
还是更新只是修bug?

点评

不是全算到左键吧……比如6就是中键或右键  发表于 2018-5-6 15:40
所以Mouse.up? 的参数传非1/2/4的值全算到鼠标左键是什么鬼。。。  发表于 2018-5-6 15:07
只是修bug……如果之后加了功能会写日志的  发表于 2018-5-6 14:47
回复

使用道具 举报

梦石
5
星屑
3061
在线时间
613 小时
注册时间
2012-11-12
回帖
449

开拓者

发表于 2018-5-7 00:53:39 | 显示全部楼层
⑨姐姐是世界上最好的姐姐,黄鸡哥哥是最好的哥哥
向诸位造轮者表示感谢
回复

使用道具 举报

仙木精灵

梦石
0
星屑
651
在线时间
215 小时
注册时间
2012-4-16
回帖
460
发表于 2018-5-7 15:31:30 | 显示全部楼层
画面变得更精致了,棒棒哒
回复

使用道具 举报

梦石
0
星屑
7650
在线时间
1162 小时
注册时间
2016-9-10
回帖
145

开拓者

发表于 2018-5-7 19:58:58 | 显示全部楼层
这次好了,不会崩了
但有个新的问题
我用了一个视频格式扩展脚本,现在这个版本会跳过视频播放(不播放视频),以前的版本并没有这个问题

以下是我用的视频格式扩展脚本

另外想问题个问题:就是SV100多人战斗,并显示武器画面会卡顿很明显的问题,以后会优化吗?谢谢

[pre lang="ruby"]

=begin
 ■ RGDS_SP ver 0.0.1.2
動画再生スクリプト(表示系)for VX Ace
動画再生スクリプト(ベース)より下に配置してください。

=end




module RGDS_SP
  @@visible = false
  
  # ■ 動画設定クラス $game_system.movie_infoで使用
  class MovieInfo
    attr_reader :x
    attr_reader :y
    attr_reader :z
    attr_reader :width_max
    attr_reader :height_max
    attr_reader :origin_center
    attr_accessor :mode
    attr_accessor :refresh_flag
    def initialize
      @x = Graphics.width / 2
      @y = Graphics.height / 2
      @z = 500
      @width_max  = 0
      @height_max = 0
      @origin_center = true
      @mode = 0
      @refresh_flag = false
    end
   
    # セッター
    def x=(n)
      @x = n
      @refresh_flag = true
    end
    def y=(n)
      @y = n
      @refresh_flag = true
    end
    def z=(n)
      @z = n
      @refresh_flag = true
    end
    def width_max=(n)
      @width_max = n
      @refresh_flag = true
    end
    def width_max=(n)
      @width_max = n
      @refresh_flag = true
    end
    def origin_center=(flag)
      @origin_center = flag
      @refresh_flag = true
    end

    # ■ 表示位置、サイズを指定します。
    #- x, y: 表示座標
    #- width_max, height_max: 表示枠。この内部に収まるように拡大縮小します。
    #                       : どちらかが0以下の場合拡大縮小は行われません。
    #- orogin: 表示位置基準点 false(デフォ): 動画の左上, true: 動画の中心を上記
    #-         の[x,y]にあわせます
    def set_position(x=0,y=0,width_max=0,height_max=0,origin=false)
      @x = x
      @y = y
      @width_max  = width_max
      @height_max = height_max
      @origin_center = origin
      @refresh_flag = true
    end
   
    # ■ 以降の表示位置、サイズをデフォルトに戻します。
    # 拡大縮小なし、左上にあわせて表示
    def reset_position
      @x = Graphics.width / 2
      @y = Graphics.height / 2
      @width_max  = 0
      @height_max = 0
      @origin_center = true
      @refresh_flag = true
    end
   
  end
  
  
  class MovieSprite < ::Sprite
    # 初期化
    def initialize(viewport=nil)
      super
      self.visible = false
      self.bitmap = RGDS.bitmap
      fix_position()
    end

    # 拡大縮小処理
    def change_zoom
      zoom = 1.0
      bw = self.bitmap.width
      bh = self.bitmap.height
      return if bw <= 0 or bh <= 0
      if $game_system.movie_info.width_max > 0 and $game_system.movie_info.height_max > 0
        zoom_w = $game_system.movie_info.width_max.to_f / bw.to_f
        zoom_h = $game_system.movie_info.height_max.to_f / bh.to_f
        zoom = [zoom_w, zoom_h].min
      end
      self.zoom_x = zoom
      self.zoom_y = zoom
    end

    # 表示位置変更
    def fix_position
      self.x = $game_system.movie_info.x
      self.y = $game_system.movie_info.y
      self.z = $game_system.movie_info.z
      if $game_system.movie_info.origin_center
        self.ox = self.bitmap.width / 2
        self.oy = self.bitmap.height / 2
      end
      change_zoom()
    end
   
    def update
      if (self.visible = RGDS.visible)
        if RGDS.bitmap_changed? or self.bitmap.disposed?
          self.bitmap = RGDS.bitmap
          fix_position()
          RGDS.bitmap_changed = false
          $game_system.movie_info.refresh_flag = false
        elsif $game_system.movie_info.refresh_flag
          fix_position()
          $game_system.movie_info.refresh_flag = false
        end
      end
      super
    end
  end

  module_function

  # ■ 動画をオープンします。初回は1~2秒ほどかかる場合もあります。
  def open(filename)
    RGDS.open(filename)
  end
  
  # ■ 動画を停止しクローズします。
  def close
    RGDS.close()
  end
  
  # ■ openされた動画を再生します。一時停止中なら再開します。
  # 再生が終わると自動的にクローズします。
  def run
    RGDS.run()
  end
  
  # ■ 動画を一時停止します。再開はrunで行います。
  def pause
    RGDS.pause()
  end

  # ■ 動画をオープンして自動再生します。
  #- 決定キーでスキップします。
  def start_movie(filename, option={})
   
    # スキップ検出オプション
    if option.key?(:skip_sw)
      skip_sw = option[:skip_sw].to_i
    else
      skip_sw = 0
    end
   
    # スキップ禁止モードオプション
    if option.key?(:nsm)
      nsm_mode = option[:nsm]
    else
      nsm_mode = false
    end
   
    if skip_sw > 0
      $game_switches[skip_sw] = true
    end
    scene_temp = SceneManager.scene
    if scene_temp.is_a?(Scene_Map) or scene_temp.is_a?(Scene_Battle)
      msgv = SceneManager.scene.instance_variable_get(:@message_window)
      msgv.update
      tempv = msgv.visible
      msgv.visible = false
      # オープン
      RGDS.open(filename)
      RGDS.run()
      # 終了またはボタンが押されるまでループ
      loop do
        break if scene_temp != SceneManager.scene

        # 画面の更新
        if SceneManager.scene.is_a?(Scene_Map)
          SceneManager.scene.update_for_fade
        else
          SceneManager.scene.update_basic
        end
        
        if !RGDS.active? # 再生終了
          if skip_sw > 0
            $game_switches[skip_sw] = false
          end
          break
        end
        unless nsm_mode
          if Input.trigger?(Input::A)# or Input.trigger?(Input::B)
            break
          end
        end
      end
      RGDS.close()
      msgv.visible = tempv
    end
  end
  

  # ■ 以降の表示位置、サイズを指定します。
  #- x, y: 表示座標
  #- width_max, height_max: 表示枠。この内部に収まるように拡大縮小します。
  #                       : どちらかが0以下の場合拡大縮小は行われません。
  #- origin: 表示位置基準点 false: 動画の左上, true: 動画の中心を上記
  #-         の[x,y]にあわせます
  def set_position(x=0,y=0,width_max=0,height_max=0,origin=false)
    $game_system.movie_info.set_position(x,y,width_max,height_max,origin)
  end
  
  # ■ 以降の表示位置、サイズをデフォルトに戻します。
  # 拡大縮小なし、中央にあわせて表示
  def reset_position
    $game_system.movie_info.reset_position()
  end
  
  # 再生音量取得
  def get_volume
    return RGDS.get_volume()
  end

  # 再生音量設定
  def set_volume(volume)
    return RGDS.set_volume(volume)
  end
  
end

class Game_System
  def init_movie_info
    @movie_info = RGDS_SP::MovieInfo.new
  end
  def movie_info
    init_movie_info() if @movie_info.nil?
    return @movie_info
  end
end


class Spriteset_Map
  alias :_hn_movie__initialize :initialize unless private_method_defined?(:_hn_movie__initialize)
  def initialize
    # 元の処理
    _hn_movie__initialize
    # 追加処理
    create_movie
    update_movie
  end

  alias :_hn_movie__dispose :dispose unless method_defined?(:_hn_movie__dispose)
  def dispose
    dispose_movie
    _hn_movie__dispose
  end

  alias :_hn_movie__update :update unless method_defined?(:_hn_movie__update)
  def update
    update_movie
    _hn_movie__update
  end

  # ■ シーン移行時に動画を待機モードにします。
  def create_movie
    @sp_movie = RGDS_SP::MovieSprite.new()
    @sp_movie.viewport = @viewport1
    RGDS.system_resume
  end

  # ■ シーン移行時に動画を待機モードにします。
  def dispose_movie
    RGDS.system_pause
    @sp_movie.viewport = nil
    @sp_movie.dispose
    @sp_movie = nil
  end

  def update_movie
    if RGDS.active?
      RGDS.update
    end
    @sp_movie.update unless @sp_movie.nil?
  end
end

class Spriteset_Battle
  alias :_hn_movie__initialize :initialize unless private_method_defined?(:_hn_movie__initialize)
  def initialize
    # 元の処理
    _hn_movie__initialize
    # 追加処理
    create_movie
    update_movie
  end

  alias :_hn_movie__dispose :dispose unless method_defined?(:_hn_movie__dispose)
  def dispose
    dispose_movie
    _hn_movie__dispose
  end

  alias :_hn_movie__update :update unless method_defined?(:_hn_movie__update)
  def update
    update_movie
    _hn_movie__update
  end

  # ■ シーン移行時に動画を待機モードにします。
  def create_movie
    @sp_movie = RGDS_SP::MovieSprite.new()
    @sp_movie.viewport = @viewport1
    RGDS.system_resume
  end

  # ■ シーン移行時に動画を待機モードにします。
  def dispose_movie
    RGDS.system_pause
    @sp_movie.viewport = nil
    @sp_movie.dispose
    @sp_movie = nil
  end

  def update_movie
    if RGDS.active?
      RGDS.update
    end
    @sp_movie.update unless @sp_movie.nil?
  end
end



[/pre]

点评

为什么用这个脚本,转码不好吗?  发表于 2018-5-8 23:16
回复

使用道具 举报

梦石
28
星屑
10170
在线时间
4673 小时
注册时间
2011-8-22
回帖
1216

开拓者

 楼主| 发表于 2018-5-7 20:01:30 | 显示全部楼层
devil033 发表于 2018-5-7 19:58
这次好了,不会崩了
但有个新的问题
我用了一个视频格式扩展脚本,现在这个版本会跳过视频播放(不播放视频 ...

播放视频功能是仅有的一个原版RM有而这里没提供的功能……

另外sideview不一定会优化,也许可以等RGD稳定以后根据RGD的特性重新定制一个版本,减少位图操作,增加精灵操作,思路上大概是这样吧。

点评

好的,了解,谢谢  发表于 2018-5-7 20:05
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部