芯友网Xin1234.COM

如何实现点击一个按钮,下载一个小游戏,下载好之后启动那个游戏呢?



zl
:)们,如何实现点击一个按钮,下载一个小游戏,下载好之后启动那个游戏呢?
thgif
?Alpha狗 @
你是做服务器的》??
狗ahplA
客户端
thgif
客户端你不用管
东西很少
狗灰
?123 看你是用http下载,还是服务器传直接下载数据。
直接传下载数据
狗ahplA
我看了下代码,好像是只需要写入一个pub key就可以了
zl
。。。
?灰狗 感觉这两个是一样的啊
狗灰
http下载要麻烦一点
thgif
没多少东西,
zl
嗯,那个下载过程是直接下载apk,还是下载代码加资源呢?
现在公司要做一个这玩意。下载的东西和大厅都要自己弄
狗ahplA
当时刚刚测试了一把失败了
狗灰
?123 你们大厅进去之后下小游戏吧,安卓的话用apk那不是还要再安装一个应用进去?
zl
我给你个截图,。稍等
狗灰
只有考虑下资源+脚本或so。
zl
有应用做过,不过不清楚怎么弄的
狗ahplA
不晓得是不是服务器没弄好
zl


?灰狗 就是这个。刚开始灰色
下载成功后就亮了。然后直接点击就启动游戏了
飞阿心小.海上.
直接调试下载过程就知道下载是不是出问题了
如果是使用 http下载的话直接使用浏览器打开你服务器的资源,这样可以确认服务器资源有没有问题
狗灰
?123 一般就是下载资源包
飞阿心小.海上.
如果他做成像应用宝这种平台式的话就得下载apk了
zl
然后加载脚本运行?
?灰狗 我试试。先去研究下怎么加载脚本。还没玩过lua。。就看了一周,把开发流程跑通了
?灰狗 这个启动刚下载的游戏部分,是不是跟切换场景一个道理
狗灰
纯C艹的话,可以动态加载so。
zl
这个更难吧
没了解过
只用过System.loadLibrary
不算用过吧。cocos那个入口就是这样写的
thgif
现在大型游戏越来越不好做了
大家都转去做小游戏了
狗灰
那是java调用的,C艹加载so用dlopen(就跟LoadLibrary加载dll一样)。
zl
ocarD
脚本和资源捆绑成资源包下载,前端要包系统   就酱
lua运行时沙箱、资源重定向、惰性资源卸载   这些全都要有
狗灰
?Draco 文件可以动态写入libs下不?cocos提供那个写入路径是存配置用的,下到那里面的话用户去应用管理清数据的话就会把热更资源删掉。
ocarD
有机制可以防止这种事情发生的。
应该说是应对
你的主包里是带有原始配置表的,就算他删了,也只是后下载的包删了。再次启动游戏会重新下载
狗灰
这不是废话吗
zl

听不懂
ocarD
这没办法的。热更新的地址一般都是writeablepath
或者你自己建一个路径
狗灰
自己建一个路径那卸载又不能被卸载掉了吧……
ocarD
有啥不懂得。你要做小游戏,你就得把小游戏的逻辑和资源单独捆绑成一个资源包,下载下来后从里面读文件,从一个固定的lua文件开启引导,这其中就包含很多需要做的安全模块
是啊     之前是有项目会这么做的
狗灰
之前有看到过说动态更新so文件的,所有才在想把更新资源也往libs下写。
ocarD
unity的热更策略里不就有这个。热更dll  差不多吧
zl
头痛起来了
狗灰
Windows到不存在这个问题,我只需要加一个update.exe整个游戏都能全部替换。
圣大秦
?fight 嗯,学习到了
zl
:)们,下载压缩包,解压
这个操作是AssertManager就能搞定的吗
之前找的例子,解压不出来。现在这个可以,不过还没细看代码
狗ahplA
可以但是不好用
zl
额,你们都是自己实现啊
狗ahplA
我直接把assets manager里面下载和解压的那一坨抽出来了,其他的都丢了
zl
还是直接下载的不是zip
狗灰
?123 建议自己下载解压。
狗ahplA
他的下载和解压,还是可以的
但是他有一套复杂的规则,没什么卵用
zl
。。我现在还不会自己搞,没研究过那些协议。
噢噢
狗灰
还是劳资搞的直接 unzOpenURL方便
狗ahplA
就2个函数,抽出来就行了
zl
。。。
我再看下。现在这个例子的可以解压了。之前的老提示损坏的格式
在研究一下去。头都大了
狗灰
?123 我想起来了,我们之前用这个的时候发现加过密的文本文件(扩展名为js、plist、xml、json等这些)文件就会被损坏。
因为
的坑货,把这些格式文件里面的\n都转成\r\n了。
zl
。。。
也就是他这个只能下载未加密的文件。。
ocarD
我们都是用的自定义格式的
写脚本自己捆绑
狗灰
所以最后还是自己做下载
ocarD
下载有什么难做的。。
zl
、、、

。。没API,你们都是去看源码的啊
狗灰
http下载的话,不就是open一个url(跟fopen一个本地文件不是差不多吗),然后获取http头信息(相当于获取本地文件属性、大小等),然后获取http数据(不就跟fread差不多吗),获取到的数据写入本地文件就不用说了吧,最后下载完成关闭url连接(不就跟fclose是一回事吗)。
毛金大
说的好简单啊
:)就是叼啊
zl
我已经被说的一愣一愣的
流程倒是懂了一些。代码一行不会写
。。
果然是那个链接的事。。之前的代码也可以下载
我是没自己服务器,网上找的链接。。
毛金大
下载可以用那些git服务器嘛
zl
。。
毛金大
自己键个项目吧要下载的文件上传上去
zl
额,元旦玩一玩。答项目难吗
狗灰
?大金毛 难道不是这么简单:
不就对应CreateFile和fopen嘛(打开文件)
不就对应ReadFile和fread嘛(同步读取)
不就对应ReadFileEx嘛(异步读取)
不就对应CloseHandle和fclose嘛(关闭文件)
不就对应GetFileSize嘛(获取文件大小)
发送个"Range:bytes=%u-"不就对应SetFilePointer和fseek嘛(跳转读写位置)
zl
..
zl.霸学.
:)些的代码。一行都看不懂。。
毛金大.员理管.
我这么看着这几个函数都是一样的
zl.霸学.
你们热更的时候是把下载下来的资源复制到项目的res下面。还是直接使用呢
tna.员理管.
妈蛋,unity的物理引擎还是有快速穿透问题
我擦,这怎么玩
高速弹道是做不了
狗灰.员理管.
用Intel的Havok物理引擎吧
ocarD.员理管.
collider还是rigidbody有个属性要设置一下
叶柒.渣学.
tna.员理管.
设了连续检测了
ocarD.员理管.
那就是速度真的太快了。。
tna.员理管.
然并卵
叶柒.渣学.
用射线或者加大碰撞器
tna.员理管.

要弹道哟
ocarD.员理管.
恩 射线可以  别依赖collider了
—________—.酥学.
线性
tna.员理管.
不然就raycast啦
ocarD.员理管.
显示和判定又不一定要做在一起的
—________—.酥学.
做个假弹道
tna.员理管.
ocarD.员理管.
你可以让子弹自己去做raycast
检测到碰撞点 得到距离,然后去算自己的速度,下一帧是否会穿透
如果会就判定碰撞了
这样就精确了
tna.员理管.
这性能就下去了
尤其子弹很多的时候

惨不忍睹,日
狗灰.员理管.
要是PPU( Physical Processing Unit)普及了话就可以大量用PhysX了。
叶柒.渣学.
虚拟弹道跟特效用对象池
tna.员理管.
不是这个意思,对象多了,检测逻辑消耗就上去了
叶柒.渣学.
你是指哪块的检测!?
tna.员理管.
刚土豆的方法
ocarD.员理管.
那就不做实时的呗  子弹射出就直接raycast
tna.员理管.
体验不好
ocarD.员理管.
体验是可以优化的
比如raycast后可以根据距离延迟发送碰撞事件
tna.员理管.
那只能改需求
这是可以,不过就是躲不掉
叶柒.渣学.
我也建议用假弹道,可以模拟弹道划线啊
ocarD.员理管.
你眼睛都捕捉不到的速度咋躲。。。除非特别远
tna.员理管.
就是特别远
ocarD.员理管.
狙击?
tna.员理管.
差不多
反正有一定距离
ocarD.员理管.
那也可以把上面的实时监测分段
按速度距离算分段监测的时间
tna.员理管.
量大了还是有问题,而且是同时多个弹
还是实时多人
ocarD.员理管.
那你还要客户端算?
服务端算啊
tna.员理管.
服务端没人才

先客户端将就
ocarD.员理管.
前端监测到了又能怎样。。以前端为准么。。
tna.员理管.
后期再挪到服务端了
zl.霸学.
ocarD.员理管.
用这个
Physics.RaycastNonAlloc
设置好距离 layerMask 分配好buffer  一帧100~200次没啥问题
你试试呗
tna.员理管.
ocarD.员理管.
可以先实验一下   搞几个collider试试
Raycast的开销有一半都在new strcut上
之前用raycast做地面吸附,同一个场景几十号人,没看出有什么性能开销

相关问题
------分隔线----------------------------
赞助商链接
赞助商链接
推荐内容