塔防类游戏性能优化分享

背景:

最近因为新冠肺炎的关系,公司做了很多预期相关的内容。其实一个就是塔防游戏,大概就是在固定的路线上建立炮台以抵挡病毒,防止一个个病毒进入体内的。

那做就好了,为什么还要有优化这么一说呢?要求只是在一些高端的PC机上运行正常即可,而且时间要求非常紧。一个人完成,包括策划、美术、程序、数值等工作,只有两天。

于是我对着我的机械键盘狂敲击打了两天以后,完成了。
然后接到一个需要,需要在安卓平台上也可以运行…
然后对以下方面分别做了优化。
在这里插入图片描述

资源方面:
1.病毒模型进行坐原本的高模换成低模,本来就很小基本不影响。
2.三维模型场景换成平面,没办法千万面的场景。
3.三维的细菌运行路径通道和人体进行减面,并设置为静态物体。
4.将乱七八糟的图片尽量处理到2的倍数大小。
5.调整随意摆放的特效,调节特效发射数量。
6.有此特效用的图也很大需要注意。
7.有些图片勾选了读写功能,要注意调整。
8.统一部分字体,尽量使用一两个字体,部分字体只导入字母或数字包。
9.设置图片packing打包图集,以减少dragcall。

"代码方面"
1.对怪物和子弹建立对象池,不够用了再新加。
2.对Update中的频繁使用的变量写到Update以外来以对同一片内存反复利用。
3.用到的foreach是否可以换成for。
4.为保持速度稳定,设置目标帧率为固定值60。
5.将用本使用Animation控制病毒行动路径改为用帧移动,因为用Animation的怪物位置获取会不正确。
6.将原来使用Atan2计算的炮台角度的算法,改成transform.forward指向。
7.将发射子弹和爆炸等高频音效限定间隔播放。
8.每波结束以后调用一次GC清理部分内存。

最终在安卓平台上得以正常运行。
不知道对大家能否有帮助,也希望知道一些更进一步优化的知识。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
游戏是一种策略游戏,玩家需要在地图上建立来抵御敌人的进攻。下面是一个简单的游戏的Python代码示例: ```python import pygame import random # 初始化游戏 pygame.init() # 设置游戏窗口大小 screen_width = 800 screen_height = 600 screen = pygame.display.set_mode((screen_width, screen_height)) pygame.display.set_caption("Tower Defense") # 定义颜色 white = (255, 255, 255) black = (0, 0, 0) # 加载图片 background_img = pygame.image.load("background.png") tower_img = pygame.image.load("tower.png") enemy_img = pygame.image.load("enemy.png") # 定义的类 class Tower(pygame.sprite.Sprite): def __init__(self): super().__init__() self.image = tower_img self.rect = self.image.get_rect() self.rect.center = (screen_width // 2, screen_height // 2) def update(self): # 的更新逻辑 pass # 定义敌人的类 class Enemy(pygame.sprite.Sprite): def __init__(self): super().__init__() self.image = enemy_img self.rect = self.image.get_rect() self.rect.x = random.randint(0, screen_width - self.rect.width) self.rect.y = random.randint(-100, -self.rect.height) self.speed = random.randint(1, 3) def update(self): # 敌人的更新逻辑 self.rect.y += self.speed if self.rect.y > screen_height: self.rect.x = random.randint(0, screen_width - self.rect.width) self.rect.y = random.randint(-100, -self.rect.height) self.speed = random.randint(1, 3) # 创建和敌人的精灵组 all_sprites = pygame.sprite.Group() towers = pygame.sprite.Group() enemies = pygame.sprite.Group() # 创建的实例并添加到精灵组 tower = Tower() all_sprites.add(tower) towers.add(tower) # 创建敌人的实例并添加到精灵组 for _ in range(10): enemy = Enemy() all_sprites.add(enemy) enemies.add(enemy) # 游戏主循环 running = True while running: # 处理事件 for event in pygame.event.get(): if event.type == pygame.QUIT: running = False # 更新精灵组 all_sprites.update() # 绘制背景 screen.blit(background_img, (0, 0)) # 绘制精灵组 all_sprites.draw(screen) # 刷新屏幕 pygame.display.flip() # 退出游戏 pygame.quit() ``` 这是一个简单的游戏的代码示例,其中包括了和敌人的类定义、精灵组的管理、游戏主循环等基本要素。你可以根据自己的需求进行扩展和修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小盖子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值