Questions tagged «android»

Android是由Google,Inc.开发和维护的移动设备操作系统。此标记应包含有关Android的特定编程问题。

1
跨平台C ++ / OpenGL ES开发(iOS / Android)
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Game Development Stack Exchange 的主题。 4年前关闭。 我已经具有使用C ++和OpenGL的合理经验,并且我最近决定尝试开发移动游戏。在使用Java成功创建了一个简单的OpenGL ES Android应用程序之后,我研究了以最少的重写代码为目标同时定位Android和iOS的方法。我尝试使用Visual Studio 2015引以为傲的跨平台应用程序开发工具,但发现它们太新了,因此文档记录极少。我可以构建程序提供给我的模板项目,但是我不知道如何在给定这些模板的情况下将资产添加到游戏中或处理触摸屏输入。 不幸的是,我有一个特定的愿望,过于具体,无法在Google上找到。我想使用C ++制作一个OpenGL ES游戏,并为Android和iOS使用针对平台的精简包装。人们向我提出了类似的问题(尽管不完全相同),并且不止一个人回答说,我想要做的不仅是可能的,而且相对容易,因为我不必担心UI。 我尝试了本教程,但是它已经存在了将近三年,因此可能是为较旧的技术设计的,结果,我遇到了各种无法解释的错误。不过,截至目前,该教程与我所发现的最接近。其他所有功能要么仅适用于Android,要么建议我每年支付数百美元来使用Marmalade SDK。有时,我感觉只需要编写两次代码,一次是用Java,一次是用Objective-C,但是我一直对这种解决方案是可行的,但由于某种原因,在任何现代细节中都没有涉及,深有感触。 总而言之,我想制作一个适用于iOS和Android的OpenGL ES游戏,并使用单个C ++代码库包装少量平台特定的代码。但是,尽管有几个人推荐了这种方法,但没人能告诉我该怎么做。有人可以告诉我是否确实可行,如果可以,我可以做什么或可以去哪里学习?

1
利用游戏循环和openGL之间的多线程
在基于openGL渲染器的游戏环境中交谈: 假设有两个线程: 更新游戏中对象的游戏逻辑和物理等 根据游戏对象中的数据对每个游戏对象进行openGL绘制调用(线程1不断更新) 除非您在游戏的当前状态下每个游戏对象都有两个副本,否则您必须暂停线程1,而线程2进行抽奖,否则游戏对象将在该对象的抽奖中途更新。是不可取的! 但是停止线程1以安全地从线程2进行绘制调用会杀死多线程/并发的整个目的 除了使用成百上千或同步对象/围栅之外,还有没有更好的方法可以利用多核体系结构提高性能? 我知道我仍然可以使用多线程为尚未成为当前游戏状态一部分的对象加载纹理和编译着色器,但是如何在不影响绘制和更新的情况下对活动/可见对象执行此操作? 如果我在每个游戏对象中使用单独的同步锁怎么办?这样,任何线程都只会阻塞一个对象(理想情况),而不是整个更新/绘制周期!但是在每个对象上锁定(游戏可能有上千个对象)的代价是多少?

2
由于libGDX中不推荐使用Table.drawDebug,因此应该使用什么呢?
我正在按照“学习LibGDX游戏开发”一书来制作一个简单的游戏。我在菜单创建部分中,在其中创建一个舞台并使用调试边框对其进行渲染。 这本书说要使用,Table.drawDebug(stage)但是这个静态方法似乎已经从框架Table类中完全删除了。 我正在进口com.badlogic.gdx.scenes.scene2d.ui.Table; 下面是我的代码: @Override public void render(float deltaTime) { Gdx.gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); if (debugEnabled) { debugRebuildStage -= deltaTime; if (debugRebuildStage <= 0) { debugRebuildStage = DEBUG_REBUILD_INTERVAL; rebuildStage(); } } stage.act(deltaTime); stage.draw(); Table.drawDebug(stage); } 最后一行,Table.drawDebug(stage);有编译错误"The method drawDebug(ShapeRenderer) in the type Table is not applicable for the arguments (Stage)" …

2
插值实际上如何使物体的运动平滑?
在过去的8个月左右的时间里,我已经问过几个类似的问题,但并没有真正的高兴,所以我将使这个问题更笼统。 我有一个Android游戏,它是OpenGL ES 2.0。在其中,我有以下游戏循环: 我的循环以固定的时间步长原理工作(dt = 1 / ticksPerSecond) loops=0; while(System.currentTimeMillis() > nextGameTick && loops < maxFrameskip){ updateLogic(dt); nextGameTick+=skipTicks; timeCorrection += (1000d/ticksPerSecond) % 1; nextGameTick+=timeCorrection; timeCorrection %=1; loops++; } render(); 我的整合是这样的: sprite.posX+=sprite.xVel*dt; sprite.posXDrawAt=sprite.posX*width; 现在,一切都按我的意愿运行。我可以指定我想要一个对象在2.5秒内移动一定距离(例如屏幕宽度),并且它会做到这一点。同样,由于我在游戏循环中允许跳帧,因此我几乎可以在任何设备上执行此操作,并且总是需要2.5秒。 问题 但是,问题在于,当渲染帧跳过时,图形停顿。太烦人了。如果我取消了跳帧的功能,那么一切都会很顺畅,但是会在不同设备上以不同的速度运行。所以这不是一个选择。 我仍然不确定为什么会跳帧,但是我想指出的是,这与性能差无关,我将代码恢复为1个小的sprite,没有任何逻辑(除了移动精灵),但我仍然跳过帧。这是在Google Nexus 10平板电脑上使用的(如上所述,我需要跳帧以保持设备间的速度保持一致)。 因此,我唯一的选择是使用插值法(或外推法),我读过那里的每篇文章,但是没有一篇文章真正地帮助我了解它的工作原理,并且所有尝试的实现都失败了。 使用一种方法,我可以使事情顺利进行,但是这是行不通的,因为它弄乱了我的碰撞。我可以预见任何类似方法都会出现相同的问题,因为插值在渲染时传递给了渲染方法(并在其中起作用)。因此,如果Collision纠正了位置(角色现在正站在墙旁边),则渲染器可以更改其位置并将其绘制在墙中。 所以我真的很困惑。人们曾经说过,永远不要在渲染方法中更改对象的位置,但是所有在线示例都显示了这一点。 因此,我要求朝着正确的方向发展,请不要链接到流行的游戏循环文章(deWitters,Fix your timestep等),因为我已多次阅读这些文章。我不是要任何人为我编写代码。请简单地解释一下插值实际上如何与一些示例一起使用。然后,我将尝试将任何想法整合到我的代码中,并在需要时提出更具体的问题。(我确信这是很多人都在努力解决的问题)。 编辑 一些其他信息-游戏循环中使用的变量。 private long nextGameTick …

2
将字体大小与libgdx中的屏幕分辨率匹配时出现问题
我在以相同的大小在不同的屏幕上显示游戏文本时遇到问题,我做了一个简单的测试。 该测试包括在屏幕上显示适合的文本,我希望文本的大小与屏幕和DPI无关。 我已经找到了这个,这个答案我认为应该可以解决我的问题,但不能解决。在台式机上可以,但是在我的手机上太大。 这是我的Nexus 4的结果:(768x1280,2.0密度) 这就是我的MacBook的结果:(480x800,密度为0.6875) 我正在使用Open Sans Condensed(链接到Google字体) 如您所见,在台式机上看起来不错,但是在手机上却很大。 这是我测试的代码: public class TextTest extends ApplicationAdapter { private static final String TAG = TextTest.class.getName(); private static final String TEXT = "Tap the screen to start"; private OrthographicCamera camera; private Viewport viewport; private SpriteBatch batch; private BitmapFont font; @Override public void …

2
外推打破碰撞检测
在对精灵的运动进行推断之前,我的碰撞效果非常好。但是,在对精灵的运动进行推断(以使物体平滑)之后,碰撞不再起作用。 这是外推之前的工作方式: 但是,在执行推断后,碰撞例程将中断。我假设这是因为它作用于外推例程(位于我的render调用中)产生的新坐标。 应用推断后 如何纠正这种行为? 我尝试在推断后再进行一次额外的碰撞检查-这似乎确实解决了许多问题,但是我将其排除在外是因为将逻辑放入渲染中是不可能的。 我还尝试制作了spritesX位置的副本,对其进行推断并使用该位置而不是原始位置进行绘制,从而保留了原始位置以供逻辑使用-这似乎是一个更好的选择,但仍然会产生一些奇怪的效果与墙壁碰撞时。我很确定这也不是解决此问题的正确方法。 我在这里找到了几个类似的问题,但是答案并没有帮助我。 这是我的推断代码: public void onDrawFrame(GL10 gl) { //Set/Re-set loop back to 0 to start counting again loops=0; while(System.currentTimeMillis() > nextGameTick && loops < maxFrameskip){ SceneManager.getInstance().getCurrentScene().updateLogic(); nextGameTick+=skipTicks; timeCorrection += (1000d/ticksPerSecond) % 1; nextGameTick+=timeCorrection; timeCorrection %=1; loops++; tics++; } extrapolation = (float)(System.currentTimeMillis() + skipTicks - …

4
对于简单游戏,是否有单独的游戏循环线程是必需的?
我是游戏开发的新手。为了学习,我正在android平台上重新创建此游戏。您可以在上面的链接中观看游戏视频。这是一个简单的游戏。 我已经阅读了很多有关游戏开发入门的文章,几乎所有文章都建议在单独的线程上使用游戏循环,这对于其他游戏也很有意义。但是,对于这个特定的游戏,我需要启动一个单独的线程吗?

2
函数式语言在Android上的性能如何?
我觉得这是这个问题的特例,我觉得这是特别相关的。 我正在开发适用于Android的游戏,并且正计划在libgdx中使用Scala。我正计划制作一款性能出色的游戏,但不一定是高性能游戏。我看过libgdx关于Garbage Collection的文档,这使我想到: 函数式编程意味着许多不可变的对象。 因此,使对象变异需要制作一个新对象。 因此,许多对象会被垃圾回收,从而降低性能。 这是一个无法解决的问题吗?Android上的功能样式是否还有其他重大问题?
10 java  android  libgdx 

4
如果在免费应用程序中完成了自定义付款,Apple和Google是否要求分享份额?
我正在制作一款多平台游戏(Web / iOS / Android)。在免费版本中,核心游戏仍然可以完全玩,但是选择付费的人将获得更多社交功能(当然没有广告)。 我当时在想,不是要为所有平台都提供免费版本和付费版本,而是要免费发布这些应用程序,并且如果用户想要更多应用程序,他们必须注册并支付一次性费用(通过支付网关或PayPal) )。这样,额外的内容将在他们有权访问的所有客户端中可用。从理论上讲,这对球员来说意味着更高的价值,而对我来说则意味着更少的维护和麻烦(显然,我必须自己解决所有的付款麻烦)。 它适合Apple / Google的商业模式吗?还是仍会要求他们分担注册费?

2
我怎样才能巧妙地要求用户支持我的免费游戏?
因此,我有一个游戏,只有几个专用用户,但实际用户却很少。这是Android市场上的免费游戏,通过广告支持。我一直在想定期弹出通知给用户,鼓励他们做类似的事情: 查看展示的广告。 在Android Marketplace中写正面评价。 鼓励他们的朋友玩。 现在,我将其设置为未发布的版本,以便每5个游戏执行一次,一旦用户玩了至少10个游戏,除非他们定期点击广告。我不会让用户知道这一点,我不希望他们点击广告只是为了阻止弹出窗口。 基本上,我需要用户有更多的动力来继续前进到新的水平,并且让他们知道我想从他们那里得到什么。 这最终会帮助我吗,还是我只是让自己更加被埋葬?谢谢!


1
在进行Android开发时创建动画的最佳方法是什么?
我正在尝试创建自己的第一个Android游戏,并且目前正在尝试(与负责绘图的人员和另一个程序员一起)弄清创建动画的最佳方法是什么。(动画,例如角色移动等) 起初,设计师说她可以绘制对象/角色并用闪光灯对其进行动画处理,因此她不必绘制动作的每一帧。另一个程序员和我不太了解Flash,所以我建议从Flash动画中提取所有图像,并在动画开始时让它们一个接一个地显示。 他说,这样做最终会占用过多的CPU资源,我倾向于同意,但是我真的不明白我们应该如何制作流畅的动画,而又不会在硬件上过分费力,如果可能的话,设计人员在Adobe Illustrator上绘制每个框架。 有经验的Android游戏开发人员可以帮助我平衡这一点,以便我们继续进行游戏的其他部分,因为我不知道创建动画的最佳方法是什么。

3
Unity Android与android SDK
关于统一android basic的公告出来后,我对Unity以及学习android SDK的过程都很熟悉。 直接使用android SDK与使用Unity Android进行开发有什么优缺点?

1
不鼓励在Android游戏开发中使用集合吗?
在为Android开发游戏项目时,我正在挖掘一些有关游戏代码性能优化的信息。我知道在游戏代码中不鼓励使用Java 集合(例如List,Arraylist等),尽管集合是Java编程中的有用工具。为什么呢?我想知道技术细节,因为Collection框架会对Android系统产生多大的影响,为什么?在这方面的任何帮助将是巨大的。
10 android 

5
是否有适用于Android的免费开源3D引擎?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 是否有适用于Android的免费和无限开源3D引擎?是NDK的直接薄层吗? 我只发现了两个引擎:Unity和Shiva 3D。但是没有免费或开源的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.