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-8-23 12:12 编辑
我在之前灯光像素版的基础上,新增了2个版本的Bad Apple!!
[*]赛博朋克版(炫彩,超级震撼!)
[*]XX版
赛博朋克版 ↓↓↓
视频地址:https://www.bilibili.com/video/BV1d64y1F79v/
XX版 ↓↓↓
视频地址:https://www.bilibili.com/video/BV1d64y1F79v/
本帖最后由 枪兵打巨像 于 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 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 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);
}
压缩一下赋值那块。应该分辨率能更高。
比如a(123) :把当前帧123个像素设黑。
c(1,23):把当前帧从1到23个像素设黑。
b():下一帧,
然后可以再把这些函数调用转化成字符串省掉括号。位置用64进制表示而不是10进制。又能省空间。
这样的话提升一倍分辨率应该不成问题。
因为游戏周期是0.0625秒所以1秒16帧或者8帧好一点。。。12帧应该有浪费。
另外
20M应该是单个galaxy的限制吧。。。
本帖最后由 枪兵打巨像 于 2020-7-29 09:25 编辑
Nostalie 发表于 2020-7-29 08:31
压缩一下赋值那块。应该分辨率能更高。
比如a(123) :把当前帧123个像素设黑。
数组赋值算法的潜力有限,继续优化的空间不大,压缩算法也不好写。最根本的解决方案还是用字符串或者数据表导入,至少能提高6倍的分辨率。
游戏周期这个事情我还是第一次听到,现在这个地图还有音画不同步的问题,这个问题困扰了我很久,一直没办法解决。视频中的音画同步效果是用Premiere强行剪辑加速出来的。你提醒了我,这可能是帧率和游戏周期不匹配导致的,这可能会成为解决音画不同步问题的突破口。
20M是单个Galaxy脚本文件的大小限制。 黄哥说了,地图上传马上就要恢复了,你的地图有希望了哈! 72CCCC 发表于 2020-7-30 01:49
整这些屁用没有的玩意,2020年了啊,你只要百度视频不比你这高清一万倍。
。。。。。。 = =九楼怎么那么消极 屏蔽了。 枪兵打巨像 发表于 2020-7-29 23:15
地图已上传游戏大厅,欢迎体验哦!╮( ̄▽ ̄)╭
现在能上传了吗,不是关了上传功能啦?而且我的编辑器似乎一直都无法登陆战网。 yxxiaobin 发表于 2020-8-22 18:58
现在能上传了吗,不是关了上传功能啦?而且我的编辑器似乎一直都无法登陆战网。
可以了,上传功能已经恢复了 枪兵打巨像 发表于 2020-8-23 12:06
可以了,上传功能已经恢复了
看来网易还没放弃星际2,我以为他们不会再开放这功能了。
页:
[1]