找回密码
 点一下
查看: 3391|回复: 20

Bad Apple!! 星际争霸2版

[复制链接]
发表于 2020-7-25 23:41:39 | 显示全部楼层 |阅读模式
本帖最后由 枪兵打巨像 于 2020-7-29 22:34 编辑

Screenshot2020-07-23 23_36_24.jpg

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

Bad Apple!! 星际争霸2版

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

  • 分辨率 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 | 显示全部楼层
Screenshot2020-07-29 23_12_45.jpg

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



回复

使用道具 举报

 楼主| 发表于 2020-8-14 22:30:24 | 显示全部楼层
本帖最后由 枪兵打巨像 于 2020-8-23 12:12 编辑

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

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

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

Bad Apple!! 星际争霸2赛博朋克版 V1.0.mp4_000019.jpg

Bad Apple!! 星际争霸2赛博朋克版 V1.0.mp4_000106.jpg

Bad Apple!! 星际争霸2赛博朋克版 V1.0.mp4_000140.jpg

Bad Apple!! 星际争霸2赛博朋克版 V1.0.mp4_000247.jpg

Bad Apple!! 星际争霸2赛博朋克版 V1.0.mp4_000315.jpg


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

Bad Apple!! 星际争霸2 XX版 V1.0.mp4_000318.jpg
回复

使用道具 举报

 楼主| 发表于 2020-7-26 15:18:38 | 显示全部楼层
本帖最后由 枪兵打巨像 于 2020-7-26 18:52 编辑

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

  10.     for(i=1;i<501;i+=1){
  11.         for(j=1;j<433;j+=1){
  12.             if(p1[i][j]==1){
  13.                 judge1[i][j]=false;
  14.             }
  15.             else{
  16.                 judge1[i][j]=true;
  17.             }
  18.         }
  19.     }
  20.     for(i=1;i<501;i+=1){
  21.         for(j=1;j<433;j+=1){
  22.             if(p2[i][j]==1){
  23.                 judge2[i][j]=false;
  24.             }
  25.             else{
  26.                 judge2[i][j]=true;
  27.             }
  28.         }
  29.     }
  30.     for(i=1;i<501;i+=1){
  31.         for(j=1;j<433;j+=1){
  32.             if(p3[i][j]==1){
  33.                 judge3[i][j]=false;
  34.             }
  35.             else{
  36.                 judge3[i][j]=true;
  37.             }
  38.         }
  39.     }
  40.     for(i=1;i<501;i+=1){
  41.         for(j=1;j<433;j+=1){
  42.             if(p4[i][j]==1){
  43.                 judge4[i][j]=false;
  44.             }
  45.             else{
  46.                 judge4[i][j]=true;
  47.             }
  48.         }
  49.     }
  50.     for(i=1;i<501;i+=1){
  51.         for(j=1;j<433;j+=1){
  52.             if(p5[i][j]==1){
  53.                 judge5[i][j]=false;
  54.             }
  55.             else{
  56.                 judge5[i][j]=true;
  57.             }
  58.         }
  59.     }
  60.     for(i=1;i<298;i+=1){
  61.         for(j=1;j<433;j+=1){
  62.             if(p6[i][j]==1){
  63.                 judge6[i][j]=false;
  64.             }
  65.             else{
  66.                 judge6[i][j]=true;
  67.             }
  68.         }
  69.     }
  70.     return true;
  71. }

  72. //--------------------------------------------------------------------------------------------------
  73. void gt_Judge_Init () {
  74.     gt_Judge = TriggerCreate("gt_Judge_Func");
  75.     TriggerAddEventMapInit(gt_Judge);
  76. }
复制代码




回复

使用道具 举报

 楼主| 发表于 2020-7-26 15:22:16 | 显示全部楼层
本帖最后由 枪兵打巨像 于 2020-7-26 18:52 编辑

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

  10.     SoundPlayForPlayer(SoundLink("BadApple", -1), c_maxPlayers, PlayerGroupAll(), 100.0, 0.0);
  11.     t1=0.05;
  12.     for(i=1;i<501;i+=1){
  13.         for(j=1;j<433;j+=1){
  14.             libNtve_gf_ShowHideDoodadsInRegion(judge1[i][j], RegionFromId(j), null);
  15.         }
  16.         Wait(t1, c_timeReal);
  17.     }
  18.     for(i=1;i<501;i+=1){
  19.         for(j=1;j<433;j+=1){
  20.             libNtve_gf_ShowHideDoodadsInRegion(judge2[i][j], RegionFromId(j), null);
  21.         }
  22.         Wait(t1, c_timeReal);
  23.     }
  24.     for(i=1;i<501;i+=1){
  25.         for(j=1;j<433;j+=1){
  26.             libNtve_gf_ShowHideDoodadsInRegion(judge3[i][j], RegionFromId(j), null);
  27.         }
  28.         Wait(t1, c_timeReal);
  29.     }
  30.     for(i=1;i<501;i+=1){
  31.         for(j=1;j<433;j+=1){
  32.             libNtve_gf_ShowHideDoodadsInRegion(judge4[i][j], RegionFromId(j), null);
  33.         }
  34.         Wait(t1, c_timeReal);
  35.     }
  36.     for(i=1;i<501;i+=1){
  37.         for(j=1;j<433;j+=1){
  38.             libNtve_gf_ShowHideDoodadsInRegion(judge5[i][j], RegionFromId(j), null);
  39.         }
  40.         Wait(t1, c_timeReal);
  41.     }
  42.     for(i=1;i<298;i+=1){
  43.         for(j=1;j<433;j+=1){
  44.             libNtve_gf_ShowHideDoodadsInRegion(judge6[i][j], RegionFromId(j), null);
  45.         }
  46.         Wait(t1, c_timeReal);
  47.     }
  48.     TimerStart(TimerCreate(), 5.0, false, c_timeReal);
  49.     GameOver(1, c_gameOverVictory, true, true);
  50.     return true;
  51. }

  52. //--------------------------------------------------------------------------------------------------
  53. void gt_BAdisplay_Init () {
  54.     gt_BAdisplay = TriggerCreate("gt_BAdisplay_Func");
  55.     TriggerAddEventTimeElapsed(gt_BAdisplay, 5.0, c_timeReal);
  56. }
复制代码




回复

使用道具 举报

 楼主| 发表于 2020-7-26 15:31:54 | 显示全部楼层
本帖最后由 枪兵打巨像 于 2020-7-26 18:53 编辑

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

  10.     p1[1][1]=1;p1[1][2]=1;p1[1][3]=1;p1[1][4]=1;p1[1][5]=1;p1[1][6]=1;p1[1][7]=1;p1[1][8]=1;p1[1][9]=1;p1[1][10]=1;p1[1][11]=1;p1[1][12]=1;p1[1][13]=1;p1[1][14]=1;p1[1][15]=1;p1[1][16]=1;p1[1][17]=1;p1[1][18]=1;p1[1][19]=1;p1[1][20]=1;p1[1][21]=1;p1[1][22]=1;p1[1][23]=1;p1[1][24]=1;p1[1][25]=1;p1[1][26]=1;p1[1][27]=1;p1[1][28]=1;p1[1][29]=1;p1[1][30]=1;p1[1][31]=1;p1[1][32]=1;p1[1][33]=1;p1[1][34]=1;p1[1][35]=1;p1[1][36]=1;p1[1][37]=1;p1[1][38]=1;p1[1][39]=1;p1[1][40]=1;p1[1][41]=1;p1[1][42]=1;p1[1][43]=1;p1[1][44]=1;p1[1][45]=1;p1[1][46]=1;p1[1][47]=1;p1[1][48]=1;p1[1][49]=1;p1[1][50]=1;p1[1][51]=1;p1[1][52]=1;p1[1][53]=1;p1[1][54]=1;p1[1][55]=1;p1[1][56]=1;p1[1][57]=1;p1[1][58]=1;p1[1][59]=1;p1[1][60]=1;p1[1][61]=1;p1[1][62]=1;p1[1][63]=1;p1[1][64]=1;p1[1][65]=1;p1[1][66]=1;p1[1][67]=1;p1[1][68]=1;p1[1][69]=1;p1[1][70]=1;p1[1][71]=1;p1[1][72]=1;p1[1][73]=1;p1[1][74]=1;p1[1][75]=1;p1[1][76]=1;p1[1][77]=1;p1[1][78]=1;p1[1][79]=1;p1[1][80]=1;p1[1][81]=1;p1[1][82]=1;p1[1][83]=1;p1[1][84]=1;p1[1][85]=1;p1[1][86]=1;p1[1][87]=1;p1[1][88]=1;p1[1][89]=1;p1[1][90]=1;p1[1][91]=1;p1[1][92]=1;p1[1][93]=1;p1[1][94]=1;p1[1][95]=1;p1[1][96]=1;p1[1][97]=1;p1[1][98]=1;p1[1][99]=1;p1[1][100]=1;p1[1][101]=1;p1[1][102]=1;p1[1][103]=1;p1[1][104]=1;p1[1][105]=1;p1[1][106]=1;p1[1][107]=1;p1[1][108]=1;p1[1][109]=1;p1[1][110]=1;p1[1][111]=1;p1[1][112]=1;p1[1][113]=1;p1[1][114]=1;p1[1][115]=1;p1[1][116]=1;p1[1][117]=1;p1[1][118]=1;p1[1][119]=1;p1[1][120]=1;p1[1][121]=1;p1[1][122]=1;p1[1][123]=1;p1[1][124]=1;p1[1][125]=1;p1[1][126]=1;p1[1][127]=1;p1[1][128]=1;p1[1][129]=1;p1[1][130]=1;p1[1][131]=1;p1[1][132]=1;p1[1][133]=1;p1[1][134]=1;p1[1][135]=1;p1[1][136]=1;p1[1][137]=1;p1[1][138]=1;p1[1][139]=1;p1[1][140]=1;p1[1][141]=1;p1[1][142]=1;p1[1][143]=1;p1[1][144]=1;p1[1][145]=1;p1[1][146]=1;p1[1][147]=1;p1[1][148]=1;p1[1][149]=1;p1[1][150]=1;p1[1][151]=1;p1[1][152]=1;p1[1][153]=1;p1[1][154]=1;p1[1][155]=1;p1[1][156]=1;p1[1][157]=1;p1[1][158]=1;p1[1][159]=1;p1[1][160]=1;p1[1][161]=1;p1[1][162]=1;p1[1][163]=1;p1[1][164]=1;p1[1][165]=1;p1[1][166]=1;p1[1][167]=1;p1[1][168]=1;p1[1][169]=1;p1[1][170]=1;p1[1][171]=1;p1[1][172]=1;p1[1][173]=1;p1[1][174]=1;p1[1][175]=1;p1[1][176]=1;p1[1][177]=1;p1[1][178]=1;p1[1][179]=1;p1[1][180]=1;p1[1][181]=1;p1[1][182]=1;p1[1][183]=1;p1[1][184]=1;p1[1][185]=1;p1[1][186]=1;p1[1][187]=1;p1[1][188]=1;p1[1][189]=1;p1[1][190]=1;p1[1][191]=1;p1[1][192]=1;p1[1][193]=1;p1[1][194]=1;p1[1][195]=1;p1[1][196]=1;p1[1][197]=1;p1[1][198]=1;p1[1][199]=1;p1[1][200]=1;p1[1][201]=1;p1[1][202]=1;p1[1][203]=1;p1[1][204]=1;p1[1][205]=1;p1[1][206]=1;p1[1][207]=1;p1[1][208]=1;p1[1][209]=1;p1[1][210]=1;p1[1][211]=1;p1[1][212]=1;p1[1][213]=1;p1[1][214]=1;p1[1][215]=1;p1[1][216]=1;

  11.     p1[1][217]=1;p1[1][218]=1;p1[1][219]=1;p1[1][220]=1;p1[1][221]=1;p1[1][222]=1;p1[1][223]=1;p1[1][224]=1;p1[1][225]=1;p1[1][226]=1;p1[1][227]=1;p1[1][228]=1;p1[1][229]=1;p1[1][230]=1;p1[1][231]=1;p1[1][232]=1;p1[1][233]=1;p1[1][234]=1;p1[1][235]=1;p1[1][236]=1;p1[1][237]=1;p1[1][238]=1;p1[1][239]=1;p1[1][240]=1;p1[1][241]=1;p1[1][242]=1;p1[1][243]=1;p1[1][244]=1;p1[1][245]=1;p1[1][246]=1;p1[1][247]=1;p1[1][248]=1;p1[1][249]=1;p1[1][250]=1;p1[1][251]=1;p1[1][252]=1;p1[1][253]=1;p1[1][254]=1;p1[1][255]=1;p1[1][256]=1;p1[1][257]=1;p1[1][258]=1;p1[1][259]=1;p1[1][260]=1;p1[1][261]=1;p1[1][262]=1;p1[1][263]=1;p1[1][264]=1;p1[1][265]=1;p1[1][266]=1;p1[1][267]=1;p1[1][268]=1;p1[1][269]=1;p1[1][270]=1;p1[1][271]=1;p1[1][272]=1;p1[1][273]=1;p1[1][274]=1;p1[1][275]=1;p1[1][276]=1;p1[1][277]=1;p1[1][278]=1;p1[1][279]=1;p1[1][280]=1;p1[1][281]=1;p1[1][282]=1;p1[1][283]=1;p1[1][284]=1;p1[1][285]=1;p1[1][286]=1;p1[1][287]=1;p1[1][288]=1;p1[1][289]=1;p1[1][290]=1;p1[1][291]=1;p1[1][292]=1;p1[1][293]=1;p1[1][294]=1;p1[1][295]=1;p1[1][296]=1;p1[1][297]=1;p1[1][298]=1;p1[1][299]=1;p1[1][300]=1;p1[1][301]=1;p1[1][302]=1;p1[1][303]=1;p1[1][304]=1;p1[1][305]=1;p1[1][306]=1;p1[1][307]=1;p1[1][308]=1;p1[1][309]=1;p1[1][310]=1;p1[1][311]=1;p1[1][312]=1;p1[1][313]=1;p1[1][314]=1;p1[1][315]=1;p1[1][316]=1;p1[1][317]=1;p1[1][318]=1;p1[1][319]=1;p1[1][320]=1;p1[1][321]=1;p1[1][322]=1;p1[1][323]=1;p1[1][324]=1;p1[1][325]=1;p1[1][326]=1;p1[1][327]=1;p1[1][328]=1;p1[1][329]=1;p1[1][330]=1;p1[1][331]=1;p1[1][332]=1;p1[1][333]=1;p1[1][334]=1;p1[1][335]=1;p1[1][336]=1;p1[1][337]=1;p1[1][338]=1;p1[1][339]=1;p1[1][340]=1;p1[1][341]=1;p1[1][342]=1;p1[1][343]=1;p1[1][344]=1;p1[1][345]=1;p1[1][346]=1;p1[1][347]=1;p1[1][348]=1;p1[1][349]=1;p1[1][350]=1;p1[1][351]=1;p1[1][352]=1;p1[1][353]=1;p1[1][354]=1;p1[1][355]=1;p1[1][356]=1;p1[1][357]=1;p1[1][358]=1;p1[1][359]=1;p1[1][360]=1;p1[1][361]=1;p1[1][362]=1;p1[1][363]=1;p1[1][364]=1;p1[1][365]=1;p1[1][366]=1;p1[1][367]=1;p1[1][368]=1;p1[1][369]=1;p1[1][370]=1;p1[1][371]=1;p1[1][372]=1;p1[1][373]=1;p1[1][374]=1;p1[1][375]=1;p1[1][376]=1;p1[1][377]=1;p1[1][378]=1;p1[1][379]=1;p1[1][380]=1;p1[1][381]=1;p1[1][382]=1;p1[1][383]=1;p1[1][384]=1;p1[1][385]=1;p1[1][386]=1;p1[1][387]=1;p1[1][388]=1;p1[1][389]=1;p1[1][390]=1;p1[1][391]=1;p1[1][392]=1;p1[1][393]=1;p1[1][394]=1;p1[1][395]=1;p1[1][396]=1;p1[1][397]=1;p1[1][398]=1;p1[1][399]=1;p1[1][400]=1;p1[1][401]=1;p1[1][402]=1;p1[1][403]=1;p1[1][404]=1;p1[1][405]=1;p1[1][406]=1;p1[1][407]=1;p1[1][408]=1;p1[1][409]=1;p1[1][410]=1;p1[1][411]=1;p1[1][412]=1;p1[1][413]=1;p1[1][414]=1;p1[1][415]=1;p1[1][416]=1;p1[1][417]=1;p1[1][418]=1;p1[1][419]=1;p1[1][420]=1;p1[1][421]=1;p1[1][422]=1;p1[1][423]=1;p1[1][424]=1;p1[1][425]=1;p1[1][426]=1;p1[1][427]=1;p1[1][428]=1;p1[1][429]=1;p1[1][430]=1;p1[1][431]=1;p1[1][432]=1;

  12. ......
  13. //中间省略 p1[2][X] 到 p1[300][X] 的编码表导入,不然太长了;
  14. ......

  15.     return true;
  16. }

  17. //--------------------------------------------------------------------------------------------------
  18. void gt_InputPixelCode_p1_1_Init () {
  19.     gt_InputPixelCode_p1_1 = TriggerCreate("gt_InputPixelCode_p1_1_Func");
  20.     TriggerAddEventMapInit(gt_InputPixelCode_p1_1);
  21. }
复制代码




回复

使用道具 举报

发表于 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脚本文件的大小限制。
回复

使用道具 举报

发表于 2020-7-29 09:27:14 | 显示全部楼层
黄哥说了,地图上传马上就要恢复了,你的地图有希望了哈!
回复

使用道具 举报

发表于 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 | 显示全部楼层
屏蔽了。
回复 1 0

使用道具 举报

发表于 2020-8-22 18:58:17 | 显示全部楼层
枪兵打巨像 发表于 2020-7-29 23:15
地图已上传游戏大厅,欢迎体验哦!╮( ̄▽ ̄)╭

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

使用道具 举报

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

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

使用道具 举报

发表于 2020-8-23 17:25:51 | 显示全部楼层
枪兵打巨像 发表于 2020-8-23 12:06
可以了,上传功能已经恢复了

看来网易还没放弃星际2,我以为他们不会再开放这功能了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-14 09:32 , Processed in 0.263454 second(s), 30 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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