千年盛世手游,这款经典手游是80 90年代的经典武侠手游风格游戏,一比一还原了当时端游的画风,保留了无等级二层打金玩法,小白本期给大家讲解炼丹篇攻略。
炼丹师在千年中是一种比较特别的一个职业,不同于其它三种职业,炼丹师制作的丹药拥有特殊效果,但是炼丹师无法制造装备,其作用是一点都不亚于铸造师和裁缝制作的精良装备,炼丹师制作的药分为2类,一类是提升游戏角色自身属性的,其中有增加玩家活力最大值、攻击、防御、闪躲、命中等属性的药剂;另一类是用于加工物品所用的试剂,这些物品可以增加玩家加工装备成功率的概率,所以其余三个职业在加工装备时都是必须依赖炼丹师这个职业的。
热血江湖手游内测画面
时间:Q1
品类:SLG
时间:Q1
品类:TPS
品类:卡牌
《赛尔计划》
《代号:修真界》
品类:放置卡牌
经过了这几年,游戏从业者们基本上都有了远程办公的经验。小华说,12月这一次还算比较顺利,虽然他也要用引擎,但家里电脑还算不错,没有太大的影响。“唯一的问题就是有时候会不小心把公司电脑关了。那个远程桌面一投,我一晃眼就忘了是哪台电脑,可能不小心就关了。这时候就得拜托在公司的同事帮我打开。”
时间:1月6日
另外一个流派就是防御流派,防御流派就是舍去了闪避,以固定的伤害减免来培养自己,让自己肉一点。防御流派的优势是学量后,比较适合正派剑客,因为正派剑客很难被控制,所以防御流的剑客要比那些刀客还厉害。
从12月下旬开始,工作室自然而然地转为完全线上工作,每周的线下会也转为线上会。大家用三四个小时来连麦,开开会,聊聊天。沈明豪和同学们有时候会一起看看别的游戏。“比如说我直播玩某款游戏,然后大家一起研究一下,看看他们游戏是怎么设计的,其中有没有什么可以借鉴的点。”
沈明豪他们在学校周边租下的工作室
import fastdeploy
import cv2
model=fastdeploy.vision.keypointdetection.PPTinyPose('PP_TinyPose_128x96_infer/model.pdmodel','PP_TinyPose_128x96_infer/model.pdiparams','PP_TinyPose_128x96_infer/infer_cfg.yml')
img = cv2.imread('test.jpg')
result = model.predict(img)
class Window(QWidget):
def __init__(self):
super().__init__()
self.game_obj = GameObject()
self.keypoints = None
self.initModel()
self.initCamera()
self.initClock()
self.initUI()
def initUI(self):
grid = QGridLayout()
self.setLayout(grid)
self.Game_Box = QLabel() # 定义显示视频的Label
self.Game_Box.setFixedSize(500, 500)
grid.addWidget(self.Game_Box, 0, 0, 20, 20)
self.Game_Box.setMouseTracking(True)
self.Pred_Box = QLabel() # 定义显示视频的Label
self.Pred_Box.setFixedSize(500, 500)
grid.addWidget(self.Pred_Box, 0, 20, 20, 20)
self.setWindowTitle('test')
self.show()
def initClock(self):
# 通过定时器读取数据
self.flush_clock = QTimer() # 定义定时器,用于控制显示视频的帧率
self.flush_clock.start(30) # 定时器开始计时30ms,结果是每过30ms从摄像头中取一帧显示
self.flush_clock.timeout.connect(self.updata_frame) # 若定时器结束,show_frame()
def initCamera(self):
# 开启视频通道
self.camera_id = 0 # 为0时表示视频流来自摄像头
self.camera = cv2.VideoCapture() # 视频流
self.camera.open(self.camera_id)
def initModel(self):
self.model = fastdeploy.vision.keypointdetection.PPTinyPose('../../Models/PP_TinyPose_128x96_infer/model.pdmodel','../../Models/PP_TinyPose_128x96_infer/model.pdiparams','../../Models/PP_TinyPose_128x96_infer/infer_cfg.yml')
def inferModel(self):
# read pic from camera
_, img = self.camera.read() # 从视频流中读取
img = cv2.flip(img, 1) # 摄像头画面反转
img2 = cv2.resize(img, (500, 500)) # 把读到的帧的大小重新设置为 640x480
showPic = QImage(img2, img2.shape[1], img2.shape[0], QImage.Format_BGR888)
self.Pred_Box.setPixmap(QPixmap.fromImage(showPic))
try:
result = self.model.predict(img)
self.keypoints = result.keypoints
showPic = QImage(img, img.shape[1], img.shape[0], QImage.Format_BGR888)
self.Pred_Box.setPixmap(QPixmap.fromImage(showPic))
except:
pass
def updata_frame(self):
self.inferModel() # infer and show
# update balance
self.game_obj.update(self.keypoints)
# 绘制游戏窗口
img = self.game_obj.draw_canvas()
showPic = QImage(img, 500, 500, QImage.Format_BGR888)
self.Game_Box.setPixmap(QPixmap.fromImage(showPic))
# 游戏结束
state, score = self.game_obj.get_game_state()
if state: # 游戏结束
QMessageBox.information(self,
"Oops!",
"游戏结束!\n您的分数是" + str(score),
QMessageBox.Yes)
self.game_obj.__init__()
def update(self, keypoints):
self.x = keypoints[9][0]
self.y = keypoints[9][1]
def get_game_state(self):
game_status = False
if self.x > 250:
game_status = True
return game_status, self.score
def draw_canvas(self):
# draw balance
img = np.ones([500, 500, 3]).astype('uint8') * 255
cv2.circle(img, (int(self.x), int(self.y)), 5, (255, 0, 0), 3) # draw circle
return img