在iOS游戏中与一位居住在其他地方的艺术家合作/在iOS应用中修改文件而无需重建

时间:2011-02-18 11:43:53

标签: iphone xcode ios collaboration

前同事(艺术家)和我自己(程序员)目前正在我们的空闲时间一起开发一款小游戏。因为他根本不想学习如何使用XCode,所以除了制作他自己的版本(我不怪他,他是一个伟大的艺术家,但对技术的东西只有很少的理解),这就是我们如何工作到目前为止:

  • 我们共享一个Dropbox文件夹,用于存储所有游戏艺术作品
  • 一旦做出足够或重要的更改,我就会创建一个构建(临时分发)并将其发送给他
  • 我们会不时地见面并一起工作几个小时,也许每周一次,因为我们住在不同的城市

大部分时间都可以。但是现在我们正在忙着调整内容和游戏机制。在这个开发阶段,我们的工作流程只是缓慢和“断开”。每当他正在处理艺术作品时,他都必须等待我制作一个能够看到实际情境中反映的变化的构建。由于我们并不总是在同一时间工作,这有时意味着他将不得不等待几天 - 完全不满意。

所以,我想知道的......:在不需要重建游戏的情况下,允许他更改内容的最佳方法是什么?

我知道编译后无法更改iOS应用包的内容。所以这就是我到目前为止的想法:

  • 在开发过程中将内容移动到文档文件夹,以便可以通过iTunes访问它(根据相关文件的数量处理可能很尴尬)
  • 将Dropbox整合到游戏中,以便可以直接从我们的共享文件夹加载内容(实现此操作所需的额外工作,Dropbox限制为每天5000次API调用而非生产状态)
  • 从网络服务器加载内容(与使用保管箱相比更加复杂)

你们觉得怎么样?在我们的案例中,是否有更好,更舒适的方式来实现顺畅的协作?我错过了什么吗?

非常感谢!!

修改 目前,我没有任何计划教我的艺术家如何制作他自己的版本。只要你不认识他,你就可以认真考虑这个选择。不过,他是一位伟大的艺术家。

所以这个问题归结为:

如何在构建iPhone应用程序后修改文件/获取新文件 - 尽可能轻松,而且无需重建应用程序?

顺便说一下,这只需要在开发过程中工作,所以欢迎使用脏方法。

6 个答案:

答案 0 :(得分:10)

在一些WWDC 2010视频中,Apple讨论了这个问题。他们建议从网上加载艺术作品并以编程方式将其应用于UIKit元素或OpenGL上下文。

这很复杂,但是这是一个很好的方法,因为那样你就不会对你的二进制文件做任何修改,然后你的艺术家可以自由地工作,将艺术品上传到服务器而你就是金。

我建议使用一个好的HTTP库,比如ASIHTTPRequest,以便更轻松地处理这些请求。

答案 1 :(得分:2)

使用Web服务器/保管箱选项。您可以通过继承或扩展UIImage并在整个应用程序中使用子类来实现此目的。

答案 2 :(得分:1)

越狱你的iPhone,然后你可以使用Cyber​​duck进入设备。这样您就可以导航到应用程序的Resources文件夹(或)App的文档文件夹,并根据需要更改文件。

您必须确保文件夹权限正确,否则您需要更改它们。 同样在您的游戏中,在第一次运行时,请确保将所有资源复制到App的文档文件夹中。

答案 3 :(得分:0)

我会说你的第一个选择可能是最好的选择。您说明了通过iTunes传输大量文件的问题。为了解决这个问题,我将采取以下措施:

创建一个应用程序来创建“包”文件。它可以采用数据文件夹并以下列格式将其保存在单个文件中:

int - length of name string
char[] - filename  
int - length of data chunk
char[] - data chunk

对文件夹中的每个文件执行此操作,您将留下一个图像文件。通过iTunes复制,让你的游戏看到同一个文件夹。

所以现在他的工作流程如下:1)编辑艺术2)运行资产编译器3)将资产文件复制到设备4)加载游戏

我希望这会有所帮助。

答案 4 :(得分:0)

您也可以这样做:

  • 修改应用程序,以便在第一次启动时将图像复制到文档文件夹
  • 从doc文件夹加载图像而不是从文件夹
  • 加载图像
  • 使用像iPhone Explorer这样的工具,然后可以覆盖文档文件夹中的文件
找到iPhone浏览器为您提供的列表中的实际应用程序有点无聊,但这只是将文件拖放到正确的文件夹中。

它也适用于.app包中的某个文件,但我没有找到任何合适的应用程序从那里尝试。 无论如何,如果你想让你的艺术家几乎无忧无虑,你可能想把所有东西放在一个Documents子文件夹中:))


修改

我只是尝试将某些内容编辑到.app文件夹中并且工作正常,因此如果您使用iPhone Explorer替换图像,则甚至无需更改代码。

如果您使用的是PNG,请记住禁用PNG优化。查看here以获取解释(搜索“PNG:”)

祝你好运:)

答案 5 :(得分:-1)

我想说设置一个CVS存储库。当您对所拥有的内容感到满意时,您可以提交代码。他可以更新他的代码并根据需要更改图像。当他开心的时候,他可以提交他的更改,这样你也可以获得最新的图片(只要他没有弄乱文件,就应该没问题。)

教他如何更新图像,如何部署到设备,如何提交到存储库,它应该顺利进行(虽然我认为会有一些问题)。