几个IOS版本的坑

0

1. 使用HTTP请求的设置
游戏使用HTTP请求下载进行配置更新,但如果在IOS9版本直接使用的话是连不上的,要在Info.plist中添加一些东西,具体我是不知道,反正是要加:
clipboard
截图中的NSAppTrasportSecurity输入之后会自动变成App Transport Security Settings。

2. unity导出IOS 64位版本
unity要导出IOS的64版本需要在PlayerSetting中设置:
clipboard[5]

导出XCODE之后,在XCODE的 BuildSetting -> Architectures中的Architectures选择StandardXXX,即支持arm64的即可(如果不是的话)
同时在上传到苹果审核的时候如果提示什么ipad,ipod什么的关于屏幕的问题,这个可以在General->Deployment Info 中勾上 Requires full screen

3. XCODE编译的时候提示某些libraries没找到
这个主要是出现在添加了第三方库什么的时候,明明都按着步骤添加正确,但还是会出现这种奇怪的问题。解决方法是在BuildSettings中的SearchPaths的Library路径中带双引号的,把引号删掉。

4. web服务器下载不到最新内容
web服务器更新配置文件,遇到个问题,其他平台都很正常,就是IOS虽然检测到需要重新下载,但下载下来的还是旧的版本。最后是在请求URL中加入一个时间戳类似 xxx?201502020202之类,保证每次请求发送的URL都是不同的,这样就可以更新下最新的来了

5. 出现’System.Int32[]::System.Collections.Generic.ICollection`1.CopyTo’ for which no ahead of time (AOT) code was generated.错误
我是在安装了Bugly之后,由Bugly上传的这个错误,游戏中也确实有很多地方出现了错误。
主要原因是“代码中有使用int[]的ToList方法,而此方法在iOS上是没有实现”
比如
int[] xxx = new int[3];
List<int> lst = new List<int>(xxx) 或 lst.AddRange(xxx) 都会导致这个问题
数组转给List只能使用for循环给list了

6. 出XCODE开发版本提示An App ID with Identifier ” is not available. Please enter a different string的问题。

我做了一些动作,也不知道是不是所有的动作都有用,包括重新下载证书什么的,最后一步是
XCode->preferenc->Account->选择账号->View Details->Download All -》 Done. 重启。再出就可以了。估计是最后这一步管的用。
另外说一句,历史上Archive过的可以通过 Window->Organizer打开那个窗口查看

Unity使用ShareSDK 的微信分享安卓回调问题

1

这几天接ShareSDK,目前主要用下微信分享,IOS接上也都没问题,但安卓的回调却是有问题,没有收到回调,官方的一个帖子上说的模模糊糊,反正我是看不懂,今天问了下他们的技术,让他一步一步教我,总算是搞定了。

首先是下载Unity版本的ShareSDK后,将Plugins放到Unity中。
然后,用exlipse打开Android_Java_Demo工程,将src中的cn.sharesdk.onekeyshare.wxapi修改名称为 自己的包名.wxapi
image
比如我的游戏的包名是com.mygame.myapp,所以这里改为 com.mygame.myapp.wxapi。

之后src上右键export,导出jar包
imageimage

在之后到Unity中找到刚才导入的plugins->Android->ShareSDK->libs中删掉OneKeyShare这个jar包,把刚才我们自己导出的放到这里来。

最后打开plugins->Android->ShareSDK下的AndroidManifest,修改微信回调的配置

   1: <;!-- 微信分享回调 -->

   2:         <;activity

   3:             android:name="com.mygame.myapp.wxapi.WXEntryActivity"

   4:             android:theme="@android:style/Theme.Translucent.NoTitleBar"

   5:             android:configChanges="keyboardHidden|orientation|screenSize"

   6:             android:exported="true" />

这样就可以收到回调了。

 

后续:

shareSDK安卓微信分享的问题
接了UC的渠道,他们会再自己对apk包进行处理改变签名,导致与在微信开放平台参与审核的APP的签名不一致导致出现分享不了(点击分享后,只会提示“后台处理”字样,然后就没有然后了)。
另外,UC的包需要在自己的包名后面添加.uc,所以在改变包名之后很多ShareSDK的配置相关东西也都要做出相应修改

 

17.02.14后续:

现在不需要整个Src导出jar包,如果只是微信分享的话,可以只将那一个包(com.mygame.myapp.wxapi)导出jar包即可,否则可能会出现因为与其他jar包有重复的内容导致出版本的时候出现“unable to convert classes into dex format.”的错误。
另外,如果AndroidManifest文件,以及代码中的配置都正确了,但还是出现没有回调,尤其是如果出现闪了一下,那可能是签名不同导致的,使用签名查看工具查看一下刚编译的包的签名与微信平台中填的签名是否一致。签名查看器可以使用新浪签名工具

223574582108961459QQ图片20170214155631

如果不一致,那可能就要考虑keystore之类的问题。

 

Unity3D 自定义封装Debug.Log

5

Unity原生的Debug.Log即使在发布版也是会输出Log的,而且知道了在编辑器中输出Log还可以设置文字颜色与大小之后,就想着封装一下来使用。

   1: public class DebugLog

   2:    {

   3:        /// <summary>

   4:        /// 是否打开Log输出,如果为false,则所有的log将不会显示

   5:        /// </summary>

   6:        public static bool bEnableLog = true;

   7:        /// <summary>

   8:        /// 显示当前使用该属性的类的名称

   9:        /// </summary>

  10:        public static string CurrentClass

  11:        {

  12:            get 

  13:            {

  14:                var st = new System.Diagnostics.StackTrace();

  15:                var index = Mathf.Min(st.FrameCount - 1, 2);

  16:                if (index < 0)

  17:                    return "{NoClass}";

  18:                return "{" + st.GetFrame(index).GetMethod().DeclaringType.Name + "}";

  19:            }

  20:        }

  21:  

  22: region Tag,可以用于忽略某特定的log        

  23:        private static HashSet<string> _setIgnoreTag = new HashSet<string>();

  24:        /// <summary>

  25:        /// 添加要忽略的tag名称

  26:        /// </summary>

  27:        /// <param name="strTag">要忽略的tag</param>

  28:        public static void AddIgnoreTag(string strTag)

  29:        {

  30:            _setIgnoreTag.Add(strTag);

  31:        }

  32:        /// <summary>

  33:        /// 取消对某tag的忽略

  34:        /// </summary>

  35:        /// <param name="strTag">要取消忽略的tag</param>

  36:        public static void RemoveIgnoreTag(string strTag)

  37:        {

  38:            _setIgnoreTag.Remove(strTag);

  39:        }

  40:        /// <summary>

  41:        /// 清空要忽略的tag,即所有tag都不会忽略

  42:        /// </summary>

  43:        public static void ClearIgnoreTag()

  44:        {

  45:            _setIgnoreTag.Clear();

  46:        }

  47:        /// <summary>

  48:        /// 是否要忽略某tag的log输出

  49:        /// </summary>

  50:        /// <param name="strTag">要检测的tag</param>

  51:        /// <returns></returns>

  52:        private static bool IsIgnoreTag(string strTag)

  53:        {

  54:            return _setIgnoreTag.Contains(strTag);

  55:        }

  56: endregion

  57:  

  58:  

  59: region _log_

  60:        /// <summary>

  61:        /// Log输出,类似Debug.Log

  62:        /// </summary>

  63:        /// <param name="strLog">log内容</param>

  64:        /// <param name="context"></param>

  65:        public static void Log(string strLog, UnityEngine.Object context = null)

  66:        {

  67:            if (!bEnableLog)

  68:            {

  69:                return;

  70:            }

  71:            UnityEngine.Debug.Log(strLog, context);

  72:        }

  73:        /// <summary>

  74:        /// Log输出加强版, 可以设置tag, 如果该tag在忽略列表里面则该log不会输出

  75:        /// </summary>

  76:        /// <param name="strLog">log内容</param>

  77:        /// <param name="strTag">tag</param>

  78:        /// <param name="strColor">内容显示的颜色,格式为 RRGGBB</param>

  79:        /// <param name="context"></param>

  80:        public static void Log(string strLog, string strTag, string strColor = "ffffff", UnityEngine.Object context = null)

  81:        {

  82:            if (!bEnableLog

  83:                || IsIgnoreTag(strTag))

  84:            {

  85:                return;

  86:            }

  87:  

  88:            UnityEngine.Debug.Log(string.Format("[{0}]:<color=#{1}>{2}</color>", strTag, strColor, strLog), context);

  89:        }

  90:        /// <summary>

  91:        /// Debug.LogWarning

  92:        /// </summary>

  93:        /// <param name="strLog"></param>

  94:        /// <param name="context"></param>

  95:        public static void LogWarning(string strLog, UnityEngine.Object context = null)

  96:        {

  97:            if (!bEnableLog)

  98:            {

  99:                return;

 100:            }

 101:            UnityEngine.Debug.LogWarning(strLog, context);

 102:        }

 103:        /// <summary>

 104:        /// LogWarning加强版

 105:        /// </summary>

 106:        /// <param name="strLog">log内容</param>

 107:        /// <param name="strTag">tag</param>

 108:        /// <param name="strColor">内容显示的颜色,格式为 RRGGBB</param>

 109:        /// <param name="context"></param>

 110:        public static void LogWarning(string strLog, string strTag, string strColor = "ffff00", UnityEngine.Object context = null)

 111:        {

 112:            if (!bEnableLog

 113:                || IsIgnoreTag(strTag))

 114:            {

 115:                return;

 116:            }

 117:  

 118:            UnityEngine.Debug.LogWarning(string.Format("[{0}]:<color=#{1}>{2}</color>", strTag, strColor, strLog), context);

 119:        }

 120:        /// <summary>

 121:        /// Debug.LogError

 122:        /// </summary>

 123:        /// <param name="strLog"></param>

 124:        /// <param name="context"></param>

 125:        public static void LogError(string strLog, UnityEngine.Object context = null)

 126:        {

 127:            if (!bEnableLog)

 128:            {

 129:                return;

 130:            }

 131:            UnityEngine.Debug.LogError(strLog, context);

 132:        }

 133:        /// <summary>

 134:        /// LogError加强版

 135:        /// </summary>

 136:        /// <param name="strLog">log内容</param>

 137:        /// <param name="strTag">tag</param>

 138:        /// <param name="strColor">内容显示的颜色,格式为 RRGGBB</param>

 139:        /// <param name="context"></param>

 140:        public static void LogError(string strLog, string strTag, string strColor = "ff0000", UnityEngine.Object context = null)

 141:        {

 142:            if (!bEnableLog

 143:                || IsIgnoreTag(strTag))

 144:            {

 145:                return;

 146:            }

 147:  

 148:            UnityEngine.Debug.LogError(string.Format("[{0}]:<color=#{1}>{2}</color>", strTag, strColor, strLog), context);

 149:        }

 150: endregion

 151:  

 152: region _Tools_

 153:        /// <summary>

 154:        /// 可以为指定的字符串转为带颜色的RichText

 155:        /// 比如 strLog = “哈哈哈”,color = red

 156:        /// 则返回的字符串为 "<color=#ff0000>哈哈哈</color>"

 157:        /// </summary>

 158:        /// <param name="strLog">内容</param>

 159:        /// <param name="color">颜色</param>

 160:        /// <returns>转换后的携带color的字符串</returns>

 161:        public static string ColorSurround(string strLog, Color color)

 162:        {

 163: if UNITY_EDITOR

 164:            return "<color=" + GetColorName(color) + ">" + strLog + "</color>";

 165: else

 166:            return strLog;

 167: endif

 168:        }

 169:        /// <summary>

 170:        /// 可以为指定的字符串转为带大小的RichText

 171:        /// 比如 strLog = "哈哈哈", size = 25

 172:        /// 则返回的字符串为 "<size=25>哈哈哈</size>"

 173:        /// </summary>

 174:        /// <param name="strLog">内容</param>

 175:        /// <param name="nSize">文字大小</param>

 176:        /// <returns>转换后的携带size的字符串</returns>

 177:        public static string SizeSurround(string strLog, int nSize = 25)

 178:        {

 179: if UNITY_EDITOR

 180:            return "<size=" + nSize + ">" + strLog + "</size>";

 181: else

 182:            return strLog;

 183: endif

 184:        }

 185: endregion

 186:    }    

简单封装之后测试可以,但双击Console中的输出的时候会打开这个DebugLog文件,而不是我们调用这个DebugLog的地方,一个方法就是将这个类导出为DLL,然后将dll放到项目的Plugins中即可。当然最好将这个类放到自己的命名空间中去。

怎么导出DLL呢,首先我是使用VS编辑代码的,所以可以直接在VS中新建类库项目,我是直接在这个游戏的解决方案中新建项目的:
image
然后选择类库,输入库名称,选择项目保存位置,点击确定:
image
它会自动给你新建一个类文件,你可以删掉或修改一下。
可以将DebugLog类放到这里,然后因为里面会用到Unity的东西,所以要添加引用的依赖库:
image
右键—>添加–》引用…
在界面中选中UnityEngine.dll
image
如果没有的话点击下面的浏览,到你的Unity路径下面找到这个文件就可以。
 
还有一步是修改目标框架:
在项目上右键–》属性–》应用程序的目标框架选择 Unity3.5 net subset base class libraries,这个知道原因的可以自己选择,不知道原因的就选这个就可以:
image
然后编译生成,可以Debug或Release生成,通过选择:
image
生成成功就可以在项目路径的Debug或Release文件夹中找到你的.dll了,复制你的dll到Unity的Plugins目录下即可使用。
 
如果你会频繁修改这个文件,而每次都要复制dll到Plugins下面很麻烦的话,VS还提供生成后事件,我们可以编辑一个当生成成功之后就复制这个dll到Plugins的事件,这样在每次编译成功之后都会自动复制到Plugins下面:
项目右键—>属性—>生成事件:
image
 

Unity3D 插件方式接渠道IOS SDK

0

一般渠道都会提供Unity3D版本的接口插件脚本的,但林子太大嘛,总有那么几个不考虑我们的感受,所以偏偏没有,只能自己去动手写。

其实也不是很难,主要难点就是你到底会多少Objective C的内容。。反正我是几乎不会,所以在实际开始之前就看了两天的OC的语法相关的东西,本来还想在Windows下装什么IDE来着可以写OC代码,但这样太浪费时间了,而且也没什么必要要将OC学得多深,其实现在看来就两个文件,一个.h,一个.mm。

可能不同的SDK它提供的东西不一样吧,我这个SDK在OC中提供了一个单例,所以我只需要在我的代码中直接使用这个单例就好。而且该SDK还提供了委托,所以我要实现这个委托中的方法来 被回调。
委托,在C# 中我当然是好理解的,而且用的出神入化~~,但一到了OC中我彻底就蒙了,学了两天OC其中一天半是在搞明白这TM怎么用。我根本不想知道它的原理是个毛,我只想知道SDK提供了这个我TM怎么用。
我纠结牢骚的过程就不说了,总之最后还是老老实实的看些例子,用我的聪明才智理解一下文档中的部分关键词,总算明白是怎么回事了~~

写完了两个文件,可以在XCode工程中放到里面,也可以放到Unity工程的Plugins/IOS 目录下面,这样到处XCode工程的时候这两个文件会自动被加入到Libraries中。

然后其他内容可以看下Unity的提供的例子:http://docs.unity3d.com/Manual/PluginsForIOS.html

另外我将那两个例子贴一下吧,反正这也没什么,我就贴一下,说不定就帮助了哪个跟我一样纠结我就想知道TM怎么用的人:

SDK_7659.h

   1: #import <Foundation/Foundation.h>

   2: #import <xsdkFramework/XSDK.h>

   3: @interface SDK_7659:NSObject<XSDKDelegate>

   4:  

   5: @end

SDK_7659.mm

   1: #import "SDK_7659.h"

   2: #define SDKEvent "RecieveEventObjName"

   3: @implementation SDK_7659

   4:  

   5: -(void)XSDKCheckUpdateCallBack

   6: {

   7:     NSLog(@"XSDKCheckUpdateCallBack!!!!!!");

   8:     UnitySendMessage(SDKEvent, "eventXSDKCheckUpdateCallBack", "");

   9: }

  10: -(void)XSDKLoginCallBack:(NSString *)tokenKey

  11: {    

  12:     NSLog(@"XSDKLoginCallBack___tokenKey : %@", tokenKey);    

  13:     UnitySendMessage(SDKEvent, "eventXSDKLoginCallBack", [tokenKey UTF8String]);

  14: }

  15:  

  16: -(void)XSDKLogOutCallBack:(NSString *)guid

  17: {

  18:     NSLog(@"XSDKLogOutCallBack___guid:%@", guid);

  19:     UnitySendMessage(SDKEvent, "eventXSDKLogOutCallBack", [guid UTF8String]);

  20: }

  21:  

  22: -(void)XSDKGameLoginCallback:(NSString *)username password:(NSString *)password resultBlock:(void (^)(NSString * typeMessage))resultBlock

  23: {

  24:     NSLog(@"XSDKGameLoginCallback__usernam:%@, passward:%@", username, password);    

  25: }

  26:  

  27: -(void)XSDKGameLoginSuc

  28: {

  29:     NSLog(@"XSDKGameLoginSuc");

  30: }

  31:  

  32: -(void)XSDKPayCallback:(BOOL)isClientSuccess

  33: {

  34:     NSLog(@"XSDKPayCallback ___ %d", isClientSuccess ? 1 : 0);

  35: }

  36: @end

  37:  

  38: static SDK_7659* g_SDK7659 = nil;

  39: extern "C"

  40: {

  41:     void Init_7659(char* appKey)

  42:     {

  43:         NSLog(@"进入Init_7659~~~~~~~");

  44:         [[XSDK instanceXSDK] setAppKey:[NSString stringWithUTF8String:appKey]];    

  45:         if (g_SDK7659 == nil)

  46:         {

  47:              g_SDK7659 = [[SDK_7659 alloc] init];

  48:              [[XSDK instanceXSDK] setXsdkDelegate:g_SDK7659];

  49:         }

  50:         [[XSDK instanceXSDK] setISSupportGameNo:NO];

  51:         [[XSDK instanceXSDK] setOnlySupportIPhone:NO];

  52:         [[XSDK instanceXSDK] checkUpdate];

  53:         //[[XSDK instanceXSDK] login];    

  54:         //[[XSDK instanceXSDK] setGameContact:@"找回密码吗?"];

  55:     }    

  56:  

  57:     void ShowLogin_7659()

  58:     {

  59:         [[XSDK instanceXSDK] login];

  60:     }

  61:  

  62:     void Logout_7659()

  63:     {

  64:         [[XSDK instanceXSDK] logout];

  65:     }

  66: }

Unity APP接渠道IOS SDK的简单日志

0

这周一直在接某渠道的IOS版的SDK,因为之前从来没有接过,而且对IOS也不太熟悉,所以开始时还是有些忐忑的。不过还好,目前来说还算顺利,而且已经接了一家审核已经通过。今天在接第二家,但给的appid不对,所以连不上,不能继续往下测了,所以得点空来写下日志什么的,因为自己脑子不好使,所以还是记录一下为妙。

首先,当然是需要渠道提供的内容,包括APP注册他们渠道然后他们给你的APPID,然后就是SDK,通常里面会有资源bundle,framework之类的。

有些SDK里面会有unity3d的例子,或至少也会提供与Unity3D交互的脚本文件,如果有的话,那当然直接看下接口什么的调用就可以了,如果没有的话就得自己写了。
自己写,就得包括写Objective c的文件以及在Unity3D中[DllImport(“__Internal”)]注册接口才能使用。所以可能还得看些Objective C的相关语法之类的才能动手。
我接的第一家SDK就是需要自己写的,所以其实是用了两天时间在看OC相关的东西的,之后我会将具体接这家SDK的过程再记录一下。

好,在U3D中有了与SDK交互的接口,就可以先使用这些接口做些测试调用,输出什么的,保存到一个测试场景中。

在之后就是导出XCode工程。
一般SDK的接入文档都会有步骤教你怎么在XCode工程中进行设置,比如拖入什么库,什么framework,以及其他的设置什么的,只要按照他们的步骤搞就可以。

最后就是编译输出测试了。

我擦,好像也没什么难得。。。我为什么搞了一周~~~

好了,其实很多时候我们并不是只接一家SDK(我们不是腾讯-_-!),而不同的渠道提供的SDK的库文件、资源文件、相关配置等等都是有区别的,所以每次出了XCode工程之后需要逐个去拖什么文件、设置什么setting之类的,很容易让大家呵呵的。所以有前人就写了XUporter
这个工具是在你Build工程之后会执行将指定的文件或文件夹放入到XCode工程中,修改Info.plist等工作,所以比如当你要出渠道1的SDK版本的时候只需要将该SDK需要做的操作比如什么文件、文件夹、framework之类的写到.projmods中,工程Build完成后就按照这个配置来修改XCode工程。
需要提醒几点:
1. 那个github页有个”中文点这里“的链接,点击去的是原作者的博客,虽然都是中文的,但里面的例子什么的都是他早期的例子(包括下载代码下来之后中的例子),如果直接复制这些例子的话是会出错的,主要是少了几个属性,比如后来的 “plist”,所以还是要看下英文的说明比较好。
2. 如果你是在苹果机上用“文本编辑”工具修改这个配置文件的话~~~~我不知道是不是我机子输入法的问题,老是会将引号变为中文的引号(?)还是什么类型的引号,反正不是正常的引号,导致最后Build完成后开始执行配置的内容执行错误,所以这个一定要小心。因为这个配置文件是按JSOn的语法的,所以可以将内容复制到这个网站进行检验是否合格。
3. 这个工具默认是会将所有的.projmods配置文件都执行一遍的,所以如果你需要某个开关,自己去写吧。我现在是使用宏来设定的,不同的宏来读取不同的配置来执行。
4. 虽然工具挺好,但还是有些SDK的路子野,根本不能好好加载执行,比如我今天接的这个SDK,我怀疑这个SDK内部有写死的路径,所有内容必须在这个路径下面,否则根本找不到而编译出错,而XUporter目前的功能还没有将某个文件放到某个指定路径下的功能(可能要自己写了~~)所以,今天这个SDK只能是手动拖了。。唉~~~
5. 虽然工具挺好,但昨天出的版本在游戏中出了问题,就是NGUI的输入框。以前都是点击输入框,弹出IOS的键盘,然后键盘上会显示出原来输入框的内容,可以编辑修改。但昨天的版本中弹出键盘居然什么都没有显示,虽然也可以添加删除,但键盘太大已经挡住了游戏的输入框,所以这种情况是不允许的。我将出版本的流程一步一步还原,最后确定是使用了XUPorter的修改plist时导致的,但我修改了一下xprojmods配置文件中的东西,其实没有修改,就是把某个字符串替换了一下,而用眼睛看来这两个字符串其实是一毛一样的,然后出个版本,那个问题就消失了~~~

对于出多种SDK的版本,除了使用XUporter之外,就是备份XCODe的工程配置文件(可能只是*.xcodeproj显示包内容->project.pbxproj文件)了。虽然XCode工程需要使用SDK的库文件什么的,但也只是引用,并不是真的需要一份文件在工程中,所以只要你的SDK库文件固定保存在一个地方,然后每次出版本的时候覆盖一下配置文件就可以了。但好像听说这种方法也会什么问题,但简单的设置什么的应该是可以的吧。

最后来张图总结一下:

ssdf

Weekly Paper

0

鼓掌!今天WeeklyPaper算是正式成立了,而且开始发布第一款游戏《蛋碎了》。 应该过不了多久就会当上总经理,出任CEO,迎娶白富美,走向人生巅峰,想想还有点小激动呢!

但因为目前工作室只有我一个人,而且右手还在轻捏鼠标用着美图秀秀修改着乡村气息扑面的UI图片,左手时不时抠下横架在椅子上的一双赤脚(好吧,抠完我会闻一下,听说这是本能?),然后摇头晃脑扫一下摘下2W度的眼镜都能看清楚的几平小房间,是的,头顶飘来五个字:苦逼儿儿儿儿!
image

其实 WeeklyPaper 翻译成中文就是“苦逼”的意思,当然它还有诸如“我爱你”之类的意思,但在这里我想着重介绍下它的另一个意思,也就是每周出个游戏。
听说星期二是人们一周中最有压力的一天,就像背着两座山的骆驼,再放一根稻草,就要崩溃了。所以我要在这一天给每个人都压上一根稻草,想到大家崩溃的样子还有点小激动呢!
image

这样牛逼的事情居然已经有人在做了,所以作为一个觉得是第一个吃螃蟹腿的人来说,我很失望,当然也是很(fei)高(chang)兴(tao yan)有人走在我的前面。

如果你觉得WeeklyPaper的意思仅止于此的话,那你太小瞧九年义务教育里面的英语课了,这都是它的表面意思,还有更深层次的隐喻,而且都是高大上正能量爆表的积极意义:扶起倒地的老太太,扶老太太过马路,带老太太去公交车站,给老太太让座,扶老太太下车,带老太太逛公园,教老太太跳广场舞。
当然这些都不代表我的立场,最契合我立场的意义是:深度的参与性。

谁来参与?当然是为老太太做了那么多事的你了!目前我们的玩法可能有以下100条:
1. 吐槽+评论。只要你在我任何页面进行了吐槽,无论是美术风格深深地吸引了你,还是游戏玩法深深地打动了你,还是被作者强大的触角深深的触动了你,都可以在评论里发言,然后你就等着下个游戏刻上你的名字吧。怎么个刻法?打开本期的游戏看下就知道了。
10. 吐槽+评论。只要你在我任何页面表达了对作者的崇拜之情,然后抛出一个创意,希望能够在下周见到实现这个创意的游戏,游戏上刻有你的超大号的名字,整个一周都被粉丝们欢呼,你TM在做梦吗?我TM来帮你实现这个梦!
100. 连续剧。这个是正在准备的事情,也许一个游戏表达不出整体的内容,所以需要连续几周的游戏来描述,所以串起来就是美剧的模式了,请期待下。

但有一个致命的问题,要玩成这样的玩法,必须要有至少2个参与者,但目前只有我一个,所以你就是第二个,是不是感觉有了可以45°仰望长叹的责任感?

 

现在搭上本周的游戏:

《蛋碎了(OhMyEgg)》
这个游戏主要内容是:小明的妈妈是一只越南鸟,她下了5颗蛋,大蛋叫大蛋,二蛋叫二蛋,三蛋叫三蛋,四蛋叫五蛋,五蛋叫狗蛋。这五兄弟各怀绝技,比如大蛋力大无穷,二蛋千里眼顺风耳等等,但那都是他们破壳之后的事情了,而现在仅仅是一颗蛋。在某一天,也就是游戏的今天,妈妈去参加flappy称号争夺赛,所以留下小明看好五兄弟。但小明不小心将他们都推下了悬崖,悬崖下全是奇形怪状的石头,脆弱的蛋蛋一定会碎掉的。所以上帝给了小明一只可以在空中画出平板的神笔,小明恨恨的把笔甩给了你,希望你能利用这只神笔挽救他的弟弟们。
image

下载地址:http://pan.baidu.com/s/1i3zIF0T

我们的口号是,不做精品,只做稻草,希望你能在下周二之前把这款游戏删掉.

第十一周:滑动三消

0

理念:这个想法是怎么来的呢?过去久远了,忘了。
起初是想做消除类的游戏,在一块板上置上a*a个矩形块,每块矩形上是汉字的某个部分,然后想法子每两部分合在一起,如果这两部分可以组成一个文字,就可以消除。想象的倒是挺好,但我画了个草图,瞬间就觉得好难啊。。。
其中这个“想法子”“合在一起”的方法,是灵感来源于滑动拼图,利用滑动拼图的玩法,进行三消游戏。所以这个合成汉字的想法还是被改编成了三消。
脑中规划是每一局目标是拼出一句话,每三个汉字消掉就可以获得这一句话的其中一个字,直到全部拼完。如果消掉的字不是这句话中的,则会被放到背景的格子中,如果背景格子被填充满了而那句话还没有拼完,则游戏失败,否则成功。
是吧,我觉得挺好,但还没有实现,原因是老大开始要让大家“紧一点”,所以安排了个工作。其实做系统什么的都还好了,但这次的要做的系统是。。。可以这么说吧,一个不是策划的人,掏出手机,打开一个用Unity3D做的项目,然后给我们程序组看,之后说“就照这个做吧”。另外他已经让外包美术画好了UI,其他他给我的文档里面除了几张参考游戏的截图之外没有任何设计的东西,所以我很好奇他的怎么和美术进行沟通的。。

我的公积金还在进账中,当补完全了我就把这个坑留给林同学。最后补一张游戏截图:
image

你以为这是滑动三消的截图?笑话

第十周:围城

0

是的,本周继续上周的理念,继续制作《围城》。越来越觉得这个名字挺适合的。

应该说到目前为止,这个小游戏算是完成了,加上广告就可以上线了。而且大家也都觉得这个小游戏的新意比前面几个都要好,是啊,当然应该是越来越好啊哈哈哈。

在开始的欢迎界面,我增加了吐槽的东西,其实就是为了好玩,让玩家觉得或让我觉得玩家会觉得“我擦这个游戏玩的人不少”的感觉。。。来个截图:
image

而且因为对自己配色没信心,所以界面风格统一为黑白灰,只有简单的几个颜色:
image
而且我看着还挺好看的。尤其是使用黑白色作为主色,其他标示性的颜色就很容易凸现出来,很好。

以下是测试版的分享链接:
http://pan.baidu.com/s/1jGhyfZo

如果你在评论里吐槽了,我也许会将你的吐槽加到游戏中。。

第九周:围城

0

理念:额。。好吧,这也是刚刚起的名字,实际这是一个变异的俄罗斯方块。正方形中间出现方块,四边都可以落下方块,填充一行消失一行,直到有一边的高度达到中间位置。如图:
image

可以向四个方向滑动屏幕,让中间的方块落到指定方向的边,根据滑动方向其他边还有对应的移动。
这个主要是想到了2048,然后就冒出了这个想法。
其实在实现这个想法之前,是有另一个想法的,叫做点对点。
就是想到了小时候玩的那种连线游戏,把所有点按顺序连起来之后就可以看到一副图画,或是大象或是小狗之类的。为了实现不那么单调,所以想加上音乐节奏的元素。但最终因为涉及到图像与音乐的完美结合,所以暂时放弃了。。。。

这周身体还没有好,每天还都是喘啊喘的,一愁一郁闷就会加重,而且因为家里有个让你不停地郁闷的人,所以就没见好。

第八周:拼图

0

这周遇到五一,又遇到《激战2》,所以做的东西不是很多。
首先是美术外包,找的那个相亲妹子,她给她朋友看下,最后得出了一千八的结论。天啊,虽然我知道大家都不容易嘛,但还是深刻体会到自己没钱的痛苦,然后“婉拒”了。

不知道是不是可以找下众筹呢?但目前这个版本实在是太挫了,抛开这种私人定制软件大家接受不接受这个问题,光是这个Demo的演示就能让无数人嗤之以鼻了。

唉,又丧失了自信了。估计这也是个瓶颈了,那就是美术设计的问题。要么找人合伙:但人家也是有自己的想法,谁要无缘无故的跟你;要么找外包:我擦,真的是好贵,没钱啊,之前那个外包只是做Flash,这个不合适;要么自己搞:这个可以试下,虽然做不到那么好,但一定好研究一下到起码可以出来见人的程度。

所以啊,为了突破这个瓶颈,只能这样:自己学习一些设计方面的简单的东西,只求看得过去;然后一边寻找合作的美术同志,希望能够找到志同道合的妹纸。。。。

玩了3天《激战2》,真是好久不玩网游了,其他玩过的网游能超过3小时的几乎都没有。当时本来还对《斗战神》很期待的,但是玩了1天感觉真是。。。
不过《激战2》让我找到了些当时玩WOW的感觉,很爽。
想说的是,对角色的初始的捏脸,虽然之前玩的各种游戏都有捏脸,但可能是触到了自己内心的这个瓶颈,所以格外关注了,就是给衣服配色。。。我擦,真纠结。

总之这一周就是为了这个设计在郁闷,下一周估计还是要郁闷,但是要自己动手破掉这个郁闷了。