精华内容
下载资源
问答
  • 平台游戏开发基础大全
  • 使用unity3d发布的window平台游戏需要对代码进行加密吗?会不会被反编译工具将代码反编译出来,导致源代码外泄?
  • 平台游戏引擎开发

    千次阅读 2013-10-30 17:59:05
    目前移动平台开发涉及Andoird,ios,windows-phone,blackberry等多个平台,每个平台的开发接口都不同,同一款游戏要想部署到不同平台需要大量的重复劳动,严重影响开发成本,跨平台游戏引擎能使用统一的开发接口,能...
    • 跨平台游戏引擎的意义

    目前移动平台开发涉及Andoird,ios,windows-phone,blackberry等多个平台,每个平台的开发接口都不同,同一款游戏要想部署到不同平台需要大量的重复劳动,严重影响开发成本,跨平台游戏引擎能使用统一的开发接口,能做到written once, run everywhere的效果,大大提高开发效率

    • 跨平台游戏引擎现状(unity3d,cocos2d-x,phonegap,qt-quick)

    unity3d是一款比较流行的跨平台3d游戏引擎,据说最近也出了2d版本。使用c#,javascript等语言开发,有比较成熟的ui设计工具

    cocos2d-x 是国人开发的一款跨平台2d游戏引擎,拥有非常大的用户量。使用c++开发,开源免费。有cocostudio等开发辅助工具

    phonegap 基于html+css+javascript的跨平台开发工具,跨平台效果最好的一个,但是效率不及native的引擎

    qt-quick 使用qml+cpusplus的开发方式,qml是一个类似css的语法的界面设计语言,有非常灵活的语法。集成开发工具qt-creater。个人比较喜欢这个,但是目前还不是很成熟。

    • 研发自己的游戏引擎(GameEngine)

    首先,研发自己的游戏引擎可以对程序有100%的把控能力,根据自身需求灵活添加功能。

    还有一点重要的原因是想cocos2d-x等开源程序虽然代码是开源的,更新也很迅速,但是从1.0到3.0api的版本变换差异非常大,使用旧版本引擎开发的程序想要升级,风险太大。

    研发自己的游戏引擎当然也有弊端,需要用专门的团队来维护。

    • 游戏引擎系统架构图


    • 抽象应用程序(Application,PlatformApplication,Windows)


    • 图形引擎设计 (Graphic,Drawable,Bitmap,Shape)
    • 节点设计 (Node,Scene,Layer,Sprite,Text,EditText,Canvas)
    • 动画引擎设计 (Animation)
    • 事件处理系统设计 (Event,Touch,Keyboard) 
    • 字体渲染设计 (FontManager)

    • 粒子系统设计 (ParticleSystem)
    • 声音引擎设计 (AudioEngine)
    • 文件系统设计 (FileSystem)
    • 资源管理系统 (AssetManager,LocaleManager,ImageIO)
    • 多任务设计 (Process,Thread,AsyncTask)
    • 网络引擎设计 (HttpClient,HttpMethod,GetMethod,PostMethod)
    • 游戏引擎跨平台移植(Android,IOS,Windows,Linux)
    • 游戏引擎性能优化(顶点缓存VBO,多重采样,PNG解析优化,IO优化,字体渲染优化)
    • 游戏引擎的辅助工具设计

    未完待续。。。

    展开全文
  • 网狐平台游戏开发

    千次阅读 2015-06-06 11:20:11
    网上有很多网狐平台源码和架设环境的教程,但是我找了一下并没有后续教程,也就是说平台架设好了以后怎么才能添加自己的游戏平台里面呢,我做了一个简单的GameDemo,并把游戏添加进网狐平台。  实现流程: 添加...

    前言:   

        1.网上有很多网狐平台源码和架设环境的教程,但是我找了一下并没有后续教程,也就是说平台架设好了以后怎么才能添加自己的游戏到平台里面呢,我做了一个简单的GameDemo,并把游戏添加进网狐平台。

        2.网上架设环境教程都只讲了环境的假设,环境的假设只是开发游戏基础,我总结了一下平台游戏开发的经验,有什么错误的地方欢迎大家指正~

        3.大家在网上找到的教程大多到进入大厅,然后添加一个系统游戏就完了,却完全不知道怎么做的,就导致很多人在学习平台的时候很难把自己的开发和平台联系上

     

    本文主要内容:

                         开发的实现流程:  添加游戏列表分类--------->添加分类里的游戏房间---------->开启服务--------->打开大厅进入房间-------->点击凳子进入游戏

     

     资源说明:

     

        一共用到3中资源:

                        1..架设好的网狐系统(不带平台源代码)   地址:(3积分) http://download.csdn.net/detail/u014261855/8778819

                        2.游戏demo(虫虫快跑)                           地址:(3积分) http://download.csdn.net/detail/u014261855/8778801

                        3.服务器模板                                               地址:(1积分) http://download.csdn.net/detail/u014261855/8778779

                        4.网狐系统源代码                                        地址:(0积分) 百度网盘  http://pan.baidu.com/s/1jGov3DG

         详细说明:

              环境是vs2003和sql server 2005

                        1.我假设好的网狐系统是一定要下的,因为博主黑猫大哥给的那个平台有问题(不知道是不是我自己的原因),假设好了以后运行不起来游戏。这个里面没有平台源代码,也没有游戏源码,是一个cocos2d-x 2.2库  ,一个游戏大厅和三个服务器,还有一个数据库文件。资源少操作起来就简单了

                        2.服务器模板就是一个空服务器,不参加和客户端的互动,只用来开启服务,很容易编写,大家可以不用下载,当然积分多又多的小伙伴们自己写麻烦的就下载我的吧~收一点点辛苦分

                        3.游戏demo,这个游戏是以前做的一个酷跑类游戏,用cocos2d-x编写的,这个大家自愿下载,因为谁都可以做一个简单的demo

                        4.这个就是黑猫的系统,包括假设教程,我就不可耻的骗大家积分了~ 直接去我的网盘下载

     

     

    先搭建好环境:

               建议大家先去看看黑猫大哥的架设教程,本文写的比较简略,那些基础架设部分并没有写上,大家可能有不懂的地方,黑猫大哥的教程网上很容易找到的。

               大家下载了第一个架设好了的系统,把数据库添加进去,黑猫视屏有导入的方法,我就不多说了,之后就可以直接开启服务了,把协调破服务器、登陆服务器开启,进入大厅,成功了就证明环境没问题。(因为我把配置文件里数据库设置的是本机地址,所以大家不需要配置太多东西)我网站没有假设因为这里用不上,大家想假设的可以自己去假设哦。

     

        两个路径:

            

          

     

         开启协调服务器:(根据图标在路径中找到文件)

             

          开启登陆服务器;

             

        协调服务器和登陆服务器开启完成之后就可以启动大厅了:

            

        进入大厅成功:

             

     

        然后是游戏,下载游戏demo(虫虫快跑),添加到游戏组件EX的优化游戏文件夹下,优化游戏路径见上面路径图,编译,完成后直接运行Run.exe,能运行证明游戏也没有问题。

           

       

       

     

    平台游戏开发:

     

       现在有了大厅,也有了游戏,最后就是我们的重点----联系平台与游戏,分为三步:

                 第一步:修改数据库

                 第二步:添加资源文件

                 第三步:开启服务

       三步完成之后直接进入房间开启游戏即可,具体步骤如下:

     

     

             第一步:打开SQL Server Management Studio

     

                     将之前导入的数据库其中一个名叫QPPlatformDB的数据库

               

                打开表GameTypeItem,插入一行开发游戏,编号500,这个用来添加列表中的开发游戏类

            

                     打开表GameGameItem,插入编号111虫虫快跑一行

             

        打开表GameKindItem,同样加入虫虫快跑一行:

           

    完成之后重新开启协调服务器和登陆服务器,进入大厅就可一看到列表添加完成了:

     

     

     

     

             第二步:添加资源文件,我在Run文件里面已经添加好了,但是大家一定要注意,每一个游戏添加之前都要放入资源文件,名字和游戏启动程序一样,如果不添加是无法

    进入游戏房间大厅的,桌椅资源我用的是五子棋的,自己可以修改。

            资源文件里面这几个是配置房间大厅的:

                

          剩下的都是游戏资源。

     

             第三步:开启服务:

                要开启服务首先的写一个服务器,写这个服务器很简单,你随便找一个服务器,然后把配置内容改一下就行了(当然也可以下我的啦),配置信息:

            

     

        然后打开游戏服务器,加载虫虫快跑的游戏房间

           

       

     

       游戏服务启动之后,列表的房间就有了,点击房间进入房间大厅:

        

     然后随便点击一个位置就可以进入游戏了。

     

       好了到这里我们自己的游戏就可以添加到网狐上面去了,希望对各位有所帮助~大家有什么疑问也可留言给我。

     

     

     

            
    展开全文
  • iOS 平台游戏如何对接 GameCenter

    万次阅读 2015-04-13 17:41:12
    现在随着手游市场的不断扩大,活跃在IOS平台下的游戏厂商为了增加玩家的粘性,以及为自己的游戏前途考虑都纷纷开始接入苹果国内公司的游戏平台GameCenter;今天呢我就把我对接GameCenter的一些心得以及操作分享给大家...

    现在随着手游市场的不断扩大,活跃在IOS平台下的游戏厂商为了增加玩家的粘性,以及为自己的游戏前途考虑都纷纷开始接入苹果国内公司的游戏平台GameCenter;今天呢我就把我对接GameCenter的一些心得以及操作分享给大家,内容很简单也希望在这方面有经验的也可以跟我分享一下。

    1.itunesConnect配置:

    打开ItunesConnect,选中你的应用,在自己的应用页面上面找到GameCenter选项,如图:

     

    点击打开GameCenter显示如图效果:

     

    apple GameCenter分为两块:“排行榜”与“成就”。首先我们先来添加排行榜:

     

    添加成就:

     

     

    每个应用的成就点数最多为1000点,属性Hidden(隐藏),如果将其设置为YES,则在用户获得成就或取得一定进展前,成就是不可见的。

     

    如果要让用户能够接受基于已获得的成就的挑战,则需在iTunes Connect中创建成就时选中复选框“可多次获得”。

    每个成就需要配置本地化描述;每个成就都有两个描述,一个在用户获得成就前显示,另一个在用户获得成就后显示。另外还需要给每个成就提供已付图像,尺寸为512X512,(应用发布后就不能删除其中的成就)

     

    分别编辑完排行榜与成就后,最终在ItunesConnect中的效果:

     

    对于开发者来说,GameCenter必须经过测试才能上线,没有上线的程序在测试环境中登录时会出现sandBox提示。

     

    好了,itunesConnect部分的基本配置就介绍完了,是不是很简单。下面我们来讲一下程序部分~

     

    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    Apple为大家接入GameCenter提供了GameKit.framework,在需要使用GameCenter的类中都要导入GameKit.h;在.h文件中加入协议“GKGameCenterControllerDelegate”.

     

    1.游戏中心管理器

    创建共享的游戏管理器,不仅可以将GameCenter功能放在独立的类中,还可以轻松的在新项目中添加GameCenter功能。

    判断是否支持GameCenter:

     

    //是否支持GameCenter
    - (BOOL) isGameCenterAvailable
    {
        Class gcClass = (NSClassFromString(@"GKLocalPlayer"));
        NSString *reqSysVer = @"4.1";
        NSString *currSysVer = [[UIDevice currentDevice] systemVersion];
        BOOL osVersionSupported = ([currSysVer compare:reqSysVer options:NSNumericSearch] != NSOrderedAscending);
        
        return (gcClass && osVersionSupported);
    }

     

     

     

    2,身份验证

    GameCenter是一种需要验证身份的服务,如果没有登录就得先验证身份,否则什么也做不了。

     

    //身份验证
    - (void)authenticateLocalUser{
        GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
        
        localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error){
            if (viewController != nil) {
                [self presentViewController:viewController animated:YES completion:nil];
            }
            else{
                if ([GKLocalPlayer localPlayer].authenticated) {
                    // Get the default leaderboard identifier.
                    
                    [[GKLocalPlayer localPlayer] loadDefaultLeaderboardIdentifierWithCompletionHandler:^(NSString *leaderboardIdentifier, NSError *error) {
                        
                        if (error != nil) {
                            NSLog(@"%@", [error localizedDescription]);
                        }
                        else{
    
                        }
                    }];
                }
                
                else{
    
                }
            }
        };
        
    }

     

     

     

    3.用户变更检测

     

    //用户变更检测
    - (void)registerFoeAuthenticationNotification{
        NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
        [nc addObserver:self selector:@selector(authenticationChanged) name:GKPlayerAuthenticationDidChangeNotificationName object:nil];
    }
    
    - (void)authenticationChanged{
        if([GKLocalPlayer localPlayer].isAuthenticated){
            
        }else{
            
        }
    }

     

     

     

    4.提交得分

    向GameCenter验证身份后,便可提交得分了。

    创建GKStore对象:

    - (void) reportScore: (int64_t) score forCategory: (NSString*) category{
        GKScore *scoreReporter = [[GKScore alloc] initWithCategory:category];
        
        scoreReporter.value = score;
        [scoreReporter reportScoreWithCompletionHandler:^(NSError *error) {
            if(error != nil){
                NSData *saveSocreData = [NSKeyedArchiver archivedDataWithRootObject:scoreReporter];
                
                //未能提交得分,需要保存下来后继续提交
                [self storeScoreForLater:saveSocreData];
            }else{
                NSLog(@"提交成功");
            }
        }];
    }
    
    - (void)storeScoreForLater:(NSData *)scoreData{
        NSMutableArray *savedScoresArray = [[NSMutableArray alloc] initWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"savedScores"]];
        
        [savedScoresArray addObject:scoreData];
        [[NSUserDefaults standardUserDefaults] setObject:savedScoresArray forKey:@"savedScores"];
    }


    若得分提交不成功,需要再重新提交得分:

     

     

    //重新提交分数
    - (void)submitAllSavedScores{
        NSMutableArray *savedScoreArray = [[NSMutableArray alloc] initWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"savedScores"]];
        
        [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"savedScores"];
        
        for(NSData *scoreData in savedScoreArray){
            GKScore *scoreReporter = [NSKeyedUnarchiver unarchiveObjectWithData:scoreData];
            
            [scoreReporter reportScoreWithCompletionHandler:^(NSError *error) {
                if(error != nil){
                     NSData *saveSocreData = [NSKeyedArchiver archivedDataWithRootObject:scoreReporter];
                    //未能提交得分,需要保存下来后继续提交
                    [self storeScoreForLater:saveSocreData];
                }else{
                    NSLog(@"提交成功");
                    
                    
                }
            }];
        }
    }

     

     

     

    5.显示排行榜

     

    创建GKLocalboardViewController来显示排行榜.

     

    - (void)showGameCenter{
        GKGameCenterViewController *gameView = [[GKGameCenterViewController alloc] init];
        if(gameView != nil){
            gameView.gameCenterDelegate = self;
            
            [gameView setLeaderboardCategory:@"com.xxxx.test"];
            [gameView setLeaderboardTimeScope:GKLeaderboardTimeScopeAllTime];
            
            [self presentViewController:gameView animated:YES completion:^{
                
            }];
        }
    }
    
    - (void)gameCenterViewControllerDidFinish:(GKGameCenterViewController *)gameCenterViewController{
        [self dismissViewControllerAnimated:YES completion:nil];
    }


    6.得分成就

     

    挑战让用户可以通过GameCenter向玩家发起得分或成就方面的挑战。挑战分为四种:“无效”,“待处理”,“已结束”,“已谢绝”。

     

    - (void)reportAchievment:(NSString *)identifier withPercentageComplete:(double)percentComplete{
        GKAchievement *achievement = [[GKAchievement alloc] initWithIdentifier:identifier];
        
        [achievement setPercentComplete:percentComplete];
        
        [achievement reportAchievementWithCompletionHandler:^(NSError *error) {
            if(error != nil){
                NSLog(@"error:%@", [error localizedDescription]);
            }else{
                NSLog(@"提交成就成功");
            }
        }];
    }

     

     

    示例演示:

    1.在sandbox环境中登录GameCenter

     

    登录成功以后会在上方显示一个横幅“Welcome....”,点击GameCenter app就会显示您以及您游戏的相关信息.

     

     

     

    3.排行榜界面

     

    4.成就

    成就的图标为在后台配置的图标;

     

    5.添加好友

    点击右上角的“加号”按钮,会弹出一个添加好友的界面,输入对方AppleID即可给对方发送好友请求。

     

    6.发起挑战

     

    对方收到挑战信息推送界面

     

    好了,gameCenter的接入到这边就告一段落了,若在开发中有新的发现我会及时跟新这篇文章,欢迎大家评论分享自己的看法。

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 《Unity 3D脚本编程——使用C#语言开发跨平台游戏》是一本无论是初次接触Unity 3D脚本编程的新人,还是有一定经验的老手,都可以借由本书来提高自己的水平的好书。 作者信息:陈嘉栋长期关注Unity3D、Mono以及C#语言...
    
    
    摘要:《Unity 3D脚本编程——使用C#语言开发跨平台游戏》由枫叶小屋(www.fy29.top)发布。 
    《Unity 3D脚本编程——使用C#语言开发跨平台游戏》是一本无论是初次接触Unity 3D脚本编程的新人,还是有一定经验的老手,都可以借由本书来提高自己的水平的好书。
    

    作者信息:


    陈嘉栋长期关注Unity3D、Mono以及C#语言,并且在博客园、游戏蛮牛以及InfoQ网站以“慕容小匹夫”的笔名发表过多篇博客和文章,更是在2015年获得了微软很有价值专家(MVP)的称号。

    无论是初次接触Unity 3D脚本编程的新人,还是有一定经验的老手,都可以借由本书来提高自己的水平。

    书籍信息:


    书籍特点:


    《Unity 3D脚本编程——使用C#语言开发跨平台游戏》以Unity 3D 的跨平台基础Mono,以及其游戏脚本语言C#为基础进行讲解。全面系统地剖析了Unity 3D 的跨平台原理以及游戏脚本开发的特点。

    第1 章主要介绍了Unity 3D 引擎的历史以及编辑器的基本知识;

    第2 章主要介绍了Mono,以及Unity3D 利用Mono 实现跨平台的原理,并且分析了C#语言为什么更适合Unity 3D 游戏开发的原因;

    第3 章到第10 章主要介绍了Unity 3D 游戏脚本语言C#在使用Unity 3D 开发过程中的知识点,包括Unity 3D 脚本的类型基础、数据结构,在Unity 3D 脚本中使用泛型、使用委托和事件打造自己的消息系统、利用定制特性来拓展Unity 3D 的编辑器、Unity 3D 协程背后的秘密——迭代器,以及可空类型和序列化在Unity 3D中使用的相关知识;

    第11 章到第14 章主要介绍了Unity 3D 的资源管理,以及优化和编译的内容。

    无论是初次接触Unity 3D 脚本编程的新人,还是有一定经验的老手,相信都可以借《Unity 3D脚本编程——使用C#语言开发跨平台游戏》来提高自己在Unity 3D 方面的水平。

    下载链接:


    展开全文
  • 用C++实现跨平台游戏引擎开发

    万次阅读 2008-10-29 06:39:00
    游戏开发系列 用C++实现跨平台游戏引擎开发  你是否梦想写一部格斗游戏但却无从着手呢?是否你只因游戏开发好玩而对之感兴趣?本文我们将分析一个通用的跨平台游戏引擎,每个游戏开发新手都可以自由地...
  • U3D编译Web PC IOS Android平台游戏和运行方法 一、U3D游戏编译介绍: U3D做为一款支持多平台编译开发的游戏引擎,相比较其他的游戏开发引擎而言,不可谓不强大,而Mono是其能够实现跨平台的核心。 打开Editor菜单...
  • 【cocos2d-x】跨平台游戏引擎

    千次阅读 2012-09-23 22:30:32
    最近一直在试用各种跨平台游戏引擎主要包括cocos2d-x,wiengine,gameplay,unity3D,想要看看各个引擎有什么优势,劣势。   cocos2d-x :http://cocos2d-x.googlecode.com/files/cocos2d-2.0-x-2.0.2.zip ...
  • 随着智能手机平台的兴起,移动平台应用开发变成现在热门的话题,而在应用开发中,游戏...大家对于技术的革新和追求从来就没有停止,本文就从一名普通开发者的角度来总结一下移动平台游戏开发技术的前世今生。在最早的J
  • Cocos2d-Java跨平台游戏引擎安装配置
  • 最近一家名为Max Thrun的公司推出了一款名叫GamingCape的掌上游戏机。...这款GamingCape几乎可以运行所有经典平台游戏,包括NES、Gameboy、世嘉GameGear甚至是最初 PC版的《毁灭战士》。 这台BeagleBo...
  • Linux平台游戏性能比Windows平台要好?

    千次阅读 2012-08-11 16:20:46
    虽然Valve公司将Steam及游戏引入Linux平台一事引发了GNU之父对DRM反盗版机制违背自由、开源原则的担忧,但是Linux系统中迎来主流游戏厂商的支持依然是一个里程碑事件,对推动Linux发展来说依然是利大于弊。...
  • 计划: 一个人写休闲平台游戏 目的:希望写完前遇到伯乐。能找到合适自已的2D游戏工程师项目总监工作。 口号:为实现人生目标而努力! 原则:一切在力所能及的情况下。不过多提高技术要求。 目前情况:写了五年...
  • 今年3月初写过一篇《iO平台游戏安全小议》,到现今已有7个月了。在这段时间内,iOS平台上的安全问题也产生了不小的变化。从作弊方式来说,从以前稍有门槛的手工操作(命令行操作)发展成了傻瓜式的只需要点击按钮的...
  • LibGDX 跨平台游戏开发基础教程(总目录)

    万次阅读 多人点赞 2015-12-09 17:16:01
    本套教程讲解了 LibGDX 的基础开发,从环境搭建,到基础 API 的使用,最后再到 2048 和 Flappy Bird 两个游戏的项目实战。断断续续经过了半年多的本地整理,现在一次性发布,希望能与更多喜欢 LibGDX 的朋友学习交流...
  • Fuel4D 2.1 免费跨平台游戏引擎 现已发布 开发环境:纯 C/C++,无JAVA、O-C。 支持 WIN32、安卓 系统。 详情见官方网站:http://www.fuel4d.com 或者进Fuel4D官方群:195466766
  • LibGDX 是非常优秀的一款跨平台的 2D / 3D 游戏开发框架,开发使用 Java 语言,可开发PC桌面游戏,手机游戏,网页游戏。支持 Windows、Linux、MAC OS X、Android、iOS、HTML5 等平台。基于 Apache License, Version ...
  • xign跨平台游戏引擎演示

    千次阅读 2011-04-27 08:54:00
    这就是老邢所说的跨平台游戏引擎,使用c语言开发,目前支持ios, android, mac和window。接口兼容rpg maker,并且复制了rm的rpg脚本框架,可以运行rmvx生成的游戏。 点击打开链接 原来的链接失效了,更新一下。
  • 16大跨平台游戏引擎

    万次阅读 2013-03-19 18:10:40
    1. Edgelib:2D及3D中间件游戏引擎,支持iOS、Android、Windows Phone、塞班、Mac,Linux等等平台游戏开发。可免费使用。 2. Emo:移动游戏框架,利用Squirrel脚本语言,基于OpenGL ES及OpenAL/OpenSL开发iOS及...
  • 使用UE4发布安卓平台游戏

    千次阅读 2016-02-01 11:58:37
    使用了几天的UE4 ,总算是将游戏在安卓平台运行起来了。其中遇到很多问题,并且最终依然有一些问题没能解决。总体感觉是UE4这款引擎目前还不够成熟,问题较多。没有unity使用起来方便。但是既然开放了,发展必然迅猛...
  • UE4 移动平台游戏开发

    千次阅读 2015-08-06 21:29:24
    通用移动平台开发 Materials for Mobile Platforms Texture Guidelines for Mobile Platforms Lighting for Mobile Platforms Content Creation for Mobile Platforms ...
  • <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" > <... android:width="2px" android:color="#1579DB" ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 305,795
精华内容 122,318
关键字:

平台游戏