枪兵打巨像 发表于 2020-7-25 23:41:39

Bad Apple!! 星际争霸2版

本帖最后由 枪兵打巨像 于 2020-7-29 22:34 编辑



分享一个近期的研究成果:

Bad Apple!! 星际争霸2版

视频地址:https://www.bilibili.com/video/BV1f54y1q7q9/
地图文件:(论坛服务器抽风,地图文件总是上传失败,后面我再试一下吧)


[*]分辨率 24×18 pixel

[*]1倍速帧率 12.5 帧

[*]使用星际争霸2地图编辑器制作

[*]使用Galaxy语言编程

[*]辅助软件:Matlab, Excel, Adobe Premiere, OBS Studio

[*]感谢GA地精研究院的技术支持!
[*]地图已上传至星际争霸2游戏大厅,欢迎体验哦!
[*]由于单个Galaxy脚本文件大小不能超过20MB,而当前编码表的导入算法是二维数组直接赋值,占用空间过大,分辨率24×18+12.5帧 已经是能做到的最好的效果了,不能再增加分辨率和帧率了。后续我会学习一下Galaxy标准库函数中的string函数和datatable函数,研究更高效、更节省空间的编码表导入算法,进一步提高分辨率和帧率。

枪兵打巨像 发表于 2020-7-29 23:15:25



地图已上传游戏大厅,欢迎体验哦!╮( ̄▽ ̄)╭



枪兵打巨像 发表于 2020-8-14 22:30:24

本帖最后由 枪兵打巨像 于 2020-8-23 12:12 编辑

我在之前灯光像素版的基础上,新增了2个版本的Bad Apple!!


[*]赛博朋克版(炫彩,超级震撼!)
[*]XX版

赛博朋克版 ↓↓↓
视频地址:https://www.bilibili.com/video/BV1d64y1F79v/












XX版 ↓↓↓
视频地址:https://www.bilibili.com/video/BV1d64y1F79v/


枪兵打巨像 发表于 2020-7-26 15:18:38

本帖最后由 枪兵打巨像 于 2020-7-26 18:52 编辑

Galaxy代码1
类型:触发器
功能:将编码表转换为每一帧每一个像素点的布尔值
//--------------------------------------------------------------------------------------------------
// Trigger: Judge
//--------------------------------------------------------------------------------------------------
bool gt_Judge_Func (bool testConds, bool runActions) {
    // Automatic Variable Declarations
    // Actions
    if (!runActions) {
      return true;
    }

    for(i=1;i<501;i+=1){
      for(j=1;j<433;j+=1){
            if(p1==1){
                judge1=false;
            }
            else{
                judge1=true;
            }
      }
    }
    for(i=1;i<501;i+=1){
      for(j=1;j<433;j+=1){
            if(p2==1){
                judge2=false;
            }
            else{
                judge2=true;
            }
      }
    }
    for(i=1;i<501;i+=1){
      for(j=1;j<433;j+=1){
            if(p3==1){
                judge3=false;
            }
            else{
                judge3=true;
            }
      }
    }
    for(i=1;i<501;i+=1){
      for(j=1;j<433;j+=1){
            if(p4==1){
                judge4=false;
            }
            else{
                judge4=true;
            }
      }
    }
    for(i=1;i<501;i+=1){
      for(j=1;j<433;j+=1){
            if(p5==1){
                judge5=false;
            }
            else{
                judge5=true;
            }
      }
    }
    for(i=1;i<298;i+=1){
      for(j=1;j<433;j+=1){
            if(p6==1){
                judge6=false;
            }
            else{
                judge6=true;
            }
      }
    }
    return true;
}

//--------------------------------------------------------------------------------------------------
void gt_Judge_Init () {
    gt_Judge = TriggerCreate("gt_Judge_Func");
    TriggerAddEventMapInit(gt_Judge);
}




枪兵打巨像 发表于 2020-7-26 15:22:16

本帖最后由 枪兵打巨像 于 2020-7-26 18:52 编辑

Galaxy代码2
类型:触发器
功能:在“显示器”上播放Bad Apple!!
//--------------------------------------------------------------------------------------------------
// Trigger: BAdisplay
//--------------------------------------------------------------------------------------------------
bool gt_BAdisplay_Func (bool testConds, bool runActions) {
    // Automatic Variable Declarations
    // Actions
    if (!runActions) {
      return true;
    }

    SoundPlayForPlayer(SoundLink("BadApple", -1), c_maxPlayers, PlayerGroupAll(), 100.0, 0.0);
    t1=0.05;
    for(i=1;i<501;i+=1){
      for(j=1;j<433;j+=1){
            libNtve_gf_ShowHideDoodadsInRegion(judge1, RegionFromId(j), null);
      }
      Wait(t1, c_timeReal);
    }
    for(i=1;i<501;i+=1){
      for(j=1;j<433;j+=1){
            libNtve_gf_ShowHideDoodadsInRegion(judge2, RegionFromId(j), null);
      }
      Wait(t1, c_timeReal);
    }
    for(i=1;i<501;i+=1){
      for(j=1;j<433;j+=1){
            libNtve_gf_ShowHideDoodadsInRegion(judge3, RegionFromId(j), null);
      }
      Wait(t1, c_timeReal);
    }
    for(i=1;i<501;i+=1){
      for(j=1;j<433;j+=1){
            libNtve_gf_ShowHideDoodadsInRegion(judge4, RegionFromId(j), null);
      }
      Wait(t1, c_timeReal);
    }
    for(i=1;i<501;i+=1){
      for(j=1;j<433;j+=1){
            libNtve_gf_ShowHideDoodadsInRegion(judge5, RegionFromId(j), null);
      }
      Wait(t1, c_timeReal);
    }
    for(i=1;i<298;i+=1){
      for(j=1;j<433;j+=1){
            libNtve_gf_ShowHideDoodadsInRegion(judge6, RegionFromId(j), null);
      }
      Wait(t1, c_timeReal);
    }
    TimerStart(TimerCreate(), 5.0, false, c_timeReal);
    GameOver(1, c_gameOverVictory, true, true);
    return true;
}

//--------------------------------------------------------------------------------------------------
void gt_BAdisplay_Init () {
    gt_BAdisplay = TriggerCreate("gt_BAdisplay_Func");
    TriggerAddEventTimeElapsed(gt_BAdisplay, 5.0, c_timeReal);
}




枪兵打巨像 发表于 2020-7-26 15:31:54

本帖最后由 枪兵打巨像 于 2020-7-26 18:53 编辑

Galaxy代码3
类型:触发器
功能:导入编码表(0或者1)
//--------------------------------------------------------------------------------------------------
// Trigger: InputPixelCode_p1_1
//--------------------------------------------------------------------------------------------------
bool gt_InputPixelCode_p1_1_Func (bool testConds, bool runActions) {
    // Automatic Variable Declarations
    // Actions
    if (!runActions) {
      return true;
    }

    p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;

    p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;p1=1;

......
//中间省略 p1 到 p1 的编码表导入,不然太长了;
......

    return true;
}

//--------------------------------------------------------------------------------------------------
void gt_InputPixelCode_p1_1_Init () {
    gt_InputPixelCode_p1_1 = TriggerCreate("gt_InputPixelCode_p1_1_Func");
    TriggerAddEventMapInit(gt_InputPixelCode_p1_1);
}




Nostalie 发表于 2020-7-29 08:31:21

压缩一下赋值那块。应该分辨率能更高。

比如a(123) :把当前帧123个像素设黑。
c(1,23):把当前帧从1到23个像素设黑。
b():下一帧,
然后可以再把这些函数调用转化成字符串省掉括号。位置用64进制表示而不是10进制。又能省空间。
这样的话提升一倍分辨率应该不成问题。

因为游戏周期是0.0625秒所以1秒16帧或者8帧好一点。。。12帧应该有浪费。

另外
20M应该是单个galaxy的限制吧。。。

枪兵打巨像 发表于 2020-7-29 09:17:42

本帖最后由 枪兵打巨像 于 2020-7-29 09:25 编辑

Nostalie 发表于 2020-7-29 08:31
压缩一下赋值那块。应该分辨率能更高。

比如a(123) :把当前帧123个像素设黑。

数组赋值算法的潜力有限,继续优化的空间不大,压缩算法也不好写。最根本的解决方案还是用字符串或者数据表导入,至少能提高6倍的分辨率。

游戏周期这个事情我还是第一次听到,现在这个地图还有音画不同步的问题,这个问题困扰了我很久,一直没办法解决。视频中的音画同步效果是用Premiere强行剪辑加速出来的。你提醒了我,这可能是帧率和游戏周期不匹配导致的,这可能会成为解决音画不同步问题的突破口。

20M是单个Galaxy脚本文件的大小限制。

Vge 发表于 2020-7-29 09:27:14

黄哥说了,地图上传马上就要恢复了,你的地图有希望了哈!

72CCCC 发表于 2020-7-30 01:49:43

枪兵打巨像 发表于 2020-7-30 08:12:45

72CCCC 发表于 2020-7-30 01:49
整这些屁用没有的玩意,2020年了啊,你只要百度视频不比你这高清一万倍。

。。。。。。

幻想的仪式 发表于 2020-7-30 15:38:22

= =九楼怎么那么消极

麦德三世 发表于 2020-8-2 03:51:00

屏蔽了。

yxxiaobin 发表于 2020-8-22 18:58:17

枪兵打巨像 发表于 2020-7-29 23:15
地图已上传游戏大厅,欢迎体验哦!╮( ̄▽ ̄)╭

现在能上传了吗,不是关了上传功能啦?而且我的编辑器似乎一直都无法登陆战网。

枪兵打巨像 发表于 2020-8-23 12:06:12

yxxiaobin 发表于 2020-8-22 18:58
现在能上传了吗,不是关了上传功能啦?而且我的编辑器似乎一直都无法登陆战网。

可以了,上传功能已经恢复了

yxxiaobin 发表于 2020-8-23 17:25:51

枪兵打巨像 发表于 2020-8-23 12:06
可以了,上传功能已经恢复了

看来网易还没放弃星际2,我以为他们不会再开放这功能了。
页: [1]
查看完整版本: Bad Apple!! 星际争霸2版