如何在Corona SDK上弹出病毒

图片

$google = "We don't allow apps that lack reasonable sensitivity towards or capitalize on a natural disaster, atrocity, conflict, death, or other tragic event";
mysql_query("UPDATE cvirus_users SET winners = winners+19, message='$google' WHERE imea='$imea' ");

没有惊慌的家伙,这篇文章不会传染!此外,其作者于去年去世。除了自己编写和发布游戏,在下一个世界上无事可做。

每天最多只能有7个用户使用新游戏。他们都无法克服魔力。魔鬼也笑了,-制作游戏的能力不足,以至于有超过7个人坚持下去?说一千?

我不得不尝试。

这个主意是怎么来的


这次不在洗手间,而是在开发过程中。有两款新游戏是纸牌游戏,一类是三维封锁II(退伍军人记得),三类是方块游戏(yatzee和doodo),另外,还有一些迷惑人的表情符号与冠状病毒的战斗。

由于Telegram机器人发送给我的动画贴纸,最后两个想法诞生了。图释隐藏在其中的有趣病毒中。

在其中的一款游戏中,发现了一个漏洞,最初让我感到惊讶,然后让我发笑,然后证明它是未知类型的很好的应用。结论-机器人不小心编写。

发动机


自从迷上Corona SDK以来,已经有3年了。我设法在上面写了三维游戏,甚至在公司的员工身上写了三维游戏,但在2018年,所有游荡者都分散了,引擎开始开源。让我提醒您,Corona SDK是适用于所有手机,台式机和HTML5的跨平台45(请参阅十六进制值)引擎。

看看里面
, , , . : 11- iPhone . Xcode->Window->Devices->Drug and Drop.

是的,先生们,引擎非常易于开发,游戏的原型要在几个小时内完成,然后经过许多天的磨合,产品就准备好了。为了进行比较,关于哈布雷的出版物花了两倍的 时间,三倍,四倍。

艺术


我重复一遍,我从Telegram中的动画贴纸中拍摄了照片-它们以tgs格式存储,实际上它已重命名为gzip,解压缩为json文件,看起来像这样:

{"tgs":1,"v":"5.5.2","fr":60,"ip":0,"op":180,"w":512,"h":512,"nm":"05_STAYHOME_OUT","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":3,"nm"

匆忙地,我开始发明自己的渲染json的程序,但是由于烧死了自己,我在互联网上吐了口水。作为回应,我收到了一个电报机器人#GIF Export Bot,该机器人将tgs-stickers转换为GIF文件。天哪,我几岁了,我还记得GIF,但仍然很小……每个GIF都存储着100-200帧512x512的大小。GIMP.app是在GIF上启动的,然后进行缩放,转换,好吧,要知道,主要是不要被困在编辑艺术作品上 ……

图片

那是负面特征之一。冠状病毒-他妈的...(c)Slepakov。

游戏与物理


Corona SDK具有不可思议的神奇box2D引擎。观看比赛环境和共同病毒如何写在上面

 physics.start() 
 physics.setGravity( 0, 0 )
 physics.addBody( downBox, "static", {shape=rect }  )
 physics.addBody( cvirus, "dynamic", {shape=octogon,  density=2, 
          friction=1, bounce=0.2 } )
 physics.setGravity( 0, 9.8 )

--  

 physics.stop() 

--     

 

基本上,我没有什么要添加到这段代码中的,你们都明白。

游戏创意本身


还记得流行的熊猫吗?在那里(在重力领域),熊猫和妈妈分开了彩色的立方体。他们需要被杀死(立方体,而不是熊),但是它们令人讨厌地像Lirnean hydra的头一样繁殖,并且不想加入熊猫帮派。

熊猫帮派
. .

因此,该游戏中的彩色立方体位于均匀的正交规则网格上。大约五年前,熊猫是畅销书,甚至我也给她写了《 Hex Rabbit》的混音。在同一网格上,只有六边形,并且具有相同的熊猫,只有兔子。我很惊讶兔子仍在被驱赶-七个人(该死!)。

如果您检查?
, Apple .

然后由艺术家Andryukha Chesnokov为我画了十六进制的兔子。对他的美好回忆。尽管他还活着,但感谢上帝,继续前进。

所以?告诉我,为什么在此熊猫游戏中需要网?把它拿走,增加物理学。我们用八角形的正方形代替邪恶的立方体(请原谅我波诺马列夫教授和解析几何),然后将那帮大熊猫变成koloboks。
针对共阴的共病毒。
这很不雅,但很有趣。第二周开车去koloboks,等我累了就等。由于自我隔离,有足够的时间。

调试物理学


像这样,Corona具有调试物理的相应功能

 physics.setDrawMode( "debug" )  
 

在这种模式下,示意性地描绘了物理世界的元素,

图片

顺便说一句,有一个门框-玻璃墙最初设置得不是很高(三个屏幕),并且在一定的水平上the头掉了下来。我想知道-他们去了哪里?可能仍然会飞到地球中心……尽管没有,但考虑到空气阻力K_ {air} = 0.75,它们很可能已经飞过。

关闭调试模式

--  physics.setDrawMode( "debug" )  
 

我们得到的艺术是

图片

我承认的,作为艺术家对艺术家-我将子画面的动画限制为两个帧-添加了英雄的眨眼,我很好。我个人认为让Kisa Vorobyaninov抽签吧。

关卡编辑器


水平选择屏幕上的按钮是我自己绘制的,呈冠状病毒样式。

图片

最初,他确定了12个级别,并考虑逐渐增加黑板上的#anobolics副病毒和兔子的数量。

他的推理是这样的:
在前两个级别中,只有两种类型的恶棍生活。绿色是最危险的(c)DMB。
接下来的两个-更复杂的是,有3种类型的恶棍居住。
然后-4种。
五-无法拯救地球。
Sh(G)-是不可能的。

我很高兴地赶赴调试游戏,并在24小时后发现5种或6种怪物的水平感到无聊。很难思考。

该怎么办?哦,我拿了滑雪板,到了外面,回来了,用木棍代替了滑雪板,然后撞向了森林。在跑步的第19分钟,大脑开始动弹了,我突然意识到-我会在比赛场地上加横杆!按开放空间中分区的类型。因此,开放空间是生活中不可多得的烂摊子,但在游戏中却是正常的。

事情进行了-一切都在呼吸,每个层次都开始展示其特征,脉搏和温度。您也检查!我的意思是,温度...在这种情况下,比赛场地的数量是无限的。但是计数。我将自己限制在十几个级别,并吸引了一个三年级以上的儿子进行调试,将第五部iPhone之一交给了他。而且他很高兴,视频课上有事要做。

瞧,课程完成了,调试了各个关卡并命名了地球上的位置的陆地,我感觉很好。

保存这些地方很好现在我不是在开玩笑。

更多几何


谁说游戏的英雄是八边形?我添加了正方形,六边形,圆形,五边形。为了纪念杜布罗夫斯基,米申科和福缅科教授。差异 病毒的几何形状明显改变了游戏的气氛。你自己看。

图片

您可以使koloboks方形。俄罗斯民间包子也不会容忍它。

图片

哦! 病毒到哪里去了?已删除... Google重视病毒一词的严重性,已感染,已治愈 ...我不得不编辑元数据,共同病毒变成有色怪物每个人都死了再试一次,等等。

并行替换了Telegram图片。恩,恩,原谅帕维尔·杜罗夫,讽刺和笑声不会拯救世界。

错误,没有它们就无聊


Box2D有时会在onGlobalCollision函数中错误地崩溃。特别是在真实设备上,即iPhone。这很有趣,但是我家里没有一个Android,该应用程序位于Google Play中。

代码看起来非常简单,但是像个女孩子一样折断。

我关闭声音-它不会破裂。这个女孩聋吗?

我们看一下代码:


local function onGlobalCollision( event )
  if ( event.phase == "began" ) then

    local ball = event.object1
    local u, v = ball:getLinearVelocity()
    local speed = u*u + v*v
--    print( "speed: " .. speed  )
     if speed>10000 then
       if speed<20000 then
         audio.play( rockSound )
       else
         audio.play( woodenSound )
       end
    end
  end
end

您会看到,在onGlobalCollision函数中,我捕获了koloboks的碰撞,并从碰撞中丢失了两种声音。因此,在某些级别上,正弦等于两个,同时(或在同一时间?Grishkovets)碰撞了500多个对象。在这个难得的时刻,当碰撞在内部发生运行时会发生严重的崩溃<kznm!不要关闭声音,对不对? 怎么修?决定不直接onGlobalCollision函数调用播放(声音)

,并在变量boom1和boom2中累积碰撞次数。然后在runTimeLoop周期(每秒在游戏中调用此函数10次,不知道为什么)检查一下boom1和boom2并在必要时播放声音。

       if boom1>0 then
          audio.play( rockSound )
          boom1=0
       end

错误消失了,但是声音变得不愉快了(可以理解,每秒10次),
然后我输入了延时噪音。100毫秒的随机延迟-和oppa!一切听起来都很自然:


local function play1()
  audio.play( rockSound )
end

local function play2()
  audio.play( woodenSound )
end

local function playSound()
  local t = math.random(100)
  if boom1>0 then
    boom1=0
    timer.performWithDelay(t, play1)
  end
  if boom2>0 then
    boom2=0
    timer.performWithDelay(t, play2)
  end
end
  

帅吗 谁做得好?我知道,我知道,你自己会做到的。

Google Play和YouTube


我准备了屏幕截图并为youtube拍摄了视频,作者在钢琴后面。它看起来放慢了速度,但我的生活如此美好,无法解决:


该视频是由本地罂粟程序QuickTime.app录制的对于Apple Store,需要编辑接收到的视频(将帧频设置为30)。为此,我通常使用handBrake.app应用程序,我强烈推荐它。

服务器,没有它就没有办法


远距离竞争加剧了人们对游戏的兴趣。最佳结果存储在服务器上。Masterhost是一个单独的痛苦,为什么会这样呢?

好吧,忘记侮辱了……在服务器上,我存储了当天的最佳成绩并对玩家进行排名。当然,球员想成为第一个参加杯赛的人。

在每个午夜(MSK时区),服务器上的高分表都会重置,并且一天King变成一个黑夜南瓜。你把国王变成了卑鄙的人。

当天的获胜者进入名人堂,下一届杯赛将迎来新的战斗。

后端如何?

创建了4个mysql表:cvirus_users,cvirus_events,cvirus_today,cvirus_ticks。
cvirus_ticks表只有一个条目以及两天滴答字段

UPD。现在我意识到壁虱字段是多余的。

每隔午夜,将对照当前日期检查表中的条目,并如下更新。

    $new_day_flag = 0;
    $day = date("d");  //  
    $result = mysql_query("SELECT * FROM cvirus_ticks LIMIT 1 ");
    if ($row = mysql_fetch_array($result)) {
      $d=$row['day'];
      if ($day<>$d) {
         $new_day_flag = $day;
      }
    } 

    if ($newday <> 0) {
      mysql_query( "UPDATE cvirus_ticks SET day = '$new_day_flag', tick = tick + 1 ");
    } 

触发脚本后,播放器的所有结果都会使用更新的tick标记记录在cvirus_today表中。因此,cvirus_today表存储了按天排序的玩家记录。失败者可以看到谁在前几天成为赢家。

观察用户的地理位置非常有趣-为此,我从播放器的请求中拉出了他的IP地址,将该地址蚀刻api.wipmania.com,作为回报,我获得了该国家/地区的域名(例如RU或UA),并在播放器名称旁边显示了RU.PNG或UA.PNG标志。在某些游戏中,用户的地理位置令人印象深刻且发人深省。但是我们不会沉迷于旅行梦中(什么样的地理区域处于自我隔离模式?!),而是看看php-example如何将ip-> country

$ipAddress = $_SERVER['REMOTE_ADDR'];
$ipCode = file_get_contents('http://api.wipmania.com/' . $ipAddress . '?k=3g-Y6QrmGQ7');
 if (strlen($ipCode)!=2) $ipCode = 'HN';  // - )

我们不允许对自然灾害,残暴,冲突,死亡或其他悲剧事件缺乏理性敏感性或无法充分利用的应用程序。

这不是我,这是Google-UFO ...

使用链接列表


同时,在第N个第 12天的Google Play中等待检查我的较差游戏。只是一个-没有主持人,没有广告,没有支持。但是我不哭。我已经替换了其中的文字,图片和声音。多亏了Google,它变得更好了,此外,我还修复了一些问题。
因此,结果就是在Google Play上玩了一个游戏。没有广告,没有价格。我早就知道,休闲独来独往的时代已经一去不复返了。

但是,儿子,提醒我,您不能提供下载链接吗?然后,您变成邪恶的皮诺曹,两次是流氓(流浪者+流氓)和小人,对吗?

链接下载
! ?!

是的,谁没有禁止我这样做,我不知道是什么-Google禁止了,Apple-禁止了,Habr-禁止了两次...有时有。

但是我并不灰心-我坐在家里,修理炉子,吃荞麦。买了那么多钱呢?

HTML5拯救了所有人


-让我,但什么有关H 牛逼 ML5的版本?自负的跨平台在哪里?-细心的读者会惊呼。

没错,Github掌握在手中。

让我提醒您,在Github上,每个用户都有机会保留一个免费网站-我将这次机会用于游戏网络版本
我警告您,d-design很旧,未经审查。紧张(没有幽默感),请不要跑步。

告诉我,智者
, remote web- ( ) - . , .htaccess Access-Control-Allow-Origin: papabubadiop.imtqy.com, . — , .

我差点忘了!浏览器出现另一个错误。在Safari中启动游戏时,他收到了许多相同的消息/警告

libpng warning: iCCP: CRC error

该错误不是很严重(您按OK十次并播放),但是不愉快。互联网声称应归咎于GIMP图像编辑器。它是无b的,并且使用错误的调色板校验和保存PNG文件。在线提示无济于事
取消选中信封
-不,它不起作用。

他笨拙地解决了问题-他在“预览”应用程序(用于查看和编辑所有类型文件的Mac OS系统应用程序)中打开了所有PNG文件,进行了两次“翻转”并关闭了它。所有图片均以正确格式重新保存。

也许某些读者可能会遇到其他错误,好吧,我不是圣洁的HelloWorld,我快速粗心地编写了代码。
我们会写评论中的错误。

结语


祝您家人健康。对您来说,读者-耐心。

PS所有错别字-故意的,请勿用PM书写。

All Articles