找回密码
 注册帐号

扫一扫,访问微社区

碧俐千仞 自动做游戏(4),极小样本生成国画的尝试

13
回复
1012
查看
[ 复制链接 ]
排名
19946
昨日变化

38

主题

219

帖子

850

积分

Rank: 9Rank: 9Rank: 9

UID
53741
好友
38
蛮牛币
2625
威望
0
注册时间
2014-11-6
在线时间
187 小时
最后登录
2019-4-23

专栏作家

2019-2-26 19:31:45 显示全部楼层 阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
游戏《绘真·妙笔千山》以其独特的国画美术风格吸引玩家,《轩辕剑天之痕》《武林群侠传》也偏向国画画风,国画和游戏有着多种结合的可能。绘制国画需要深厚的功底,还需要画家对生活有所感悟,若非几十年如一日,很难画出韵味。那么,有没有可能使用机器学习的方法生成国画,于是做了一次小小的尝试。只能说是尝试吧,并不成功。
效果
下面这幅图中有几款山石,两颗松树,左上角有隐隐约约的提款。原始图像256*256,这里放大了两倍。
2.jpg
下面这幅图隐隐约约可以看到一人骑马在古道上,很恰合“古道西风瘦马”这诗句。
3.jpg
下面几幅有山有水有树,看上去还像那么一回事。
4.jpg
算法和训练
使用最原始的DCGAN,出于各种限制,训练集非常小,用了27张陈少梅的山水画。
5.jpg
下面是其中一张,大小为4000*2075,使用256*256的crop。某种程度上说,原始图片比较大,给了较多采样的可能,当然也由此分辨率无法设置太高。从训练的结果上看,“国画风格”大概是学到了,布局就不可能学到了。
6.jpg
不足
上面几张较好效果的图片是经过挑选的,实际生成有很多效果不好的图片。训练非常不稳定,无法收敛;同一次训练下,多样性不好。
7.jpg

整个训练集中只有两张有马的图(如下图),生成的“古道西风瘦马”和其中一张太像。不过256*256的crop对全图来说其实非常小(如下图红色方框),为何会整张图很像?
8.jpg
下一步
训练集太小导致各种难以收敛,收集更多的训练集才能进一步优化。可以尝试另外一些gan结构,比如PGGAN去生成高清的图片。

又到广告时间了,如果想学习网络游戏开发,《网络游戏实战(第2版)》中用一个大实例详细介绍网络游戏的开发的全过程,还对网络编程有详细的讲解,非常合适。
9.jpg









回复

使用道具 举报

7日久生情
1869/5000
排名
2252
昨日变化

0

主题

638

帖子

1869

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
163777
好友
1
蛮牛币
543
威望
0
注册时间
2017-2-27
在线时间
607 小时
最后登录
2019-4-23
2019-2-27 08:47:42 显示全部楼层
回复

使用道具 举报

6蛮牛粉丝
1015/1500
排名
2115
昨日变化

0

主题

201

帖子

1015

积分

Rank: 6Rank: 6Rank: 6

UID
26073
好友
1
蛮牛币
3864
威望
0
注册时间
2014-5-21
在线时间
158 小时
最后登录
2019-4-23
2019-2-27 08:59:19 显示全部楼层
怪我学识太浅,听不懂
回复 支持 反对

使用道具 举报

7日久生情
2907/5000
排名
724
昨日变化

24

主题

460

帖子

2907

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
123323
好友
25
蛮牛币
12034
威望
0
注册时间
2015-9-21
在线时间
1019 小时
最后登录
2019-4-23

认证开发者活力之星一掷千金

2019-2-27 09:27:31 显示全部楼层
本帖最后由 lixiaobai 于 2019-2-27 09:30 编辑

赞一个,不错。
新书已经入手。看了一下 相比较第一版而言。新增了一个大乱斗的入门训练。坦克大战整合到后面一个模块了。
对于整本书粗略看完之后的一些意见和建议:
          //意见
          1. 在排版上,比第一版来说。很多细节和重要的一些提示看起来不是很显眼(第一版很明显),在学习的过程中,有几次是因为没仔细阅读代码前一部分和后一部分的文字概述
导致一度懵逼(可能是因为已经看过N次第一版之后,现在粗略看第二版导致的)
          2.在第二版中将协议部分单独重新设计,比起之前要方便了很多。而且还支持了protobuff 非常nice。编码部分的话因为与第一版相比可能是第一次看的原因稍微有点苦涩。不是很容易就能看懂的。
          3.数据库部分的讲解比之前要细了一点,虽然我都没怎么看。因为本身有数据库,然后用的MySQL-Front工具做的。(这里新手推荐 MySQL-Front。非常简单的入手,比navtiveM有SQL 要简单多了。毕竟新手没必要接触一些多余的参数设置。这个软件就是外键关联什么的不是很友好。摸索一下几乎都能上手)   Tips:创建字段的时候,ID主键跟老师说的一样,如果是要设置成Text 格式,首先要设置ID大小才行。
          4.目前来说 毫无问题的把框架部分走了一遍。实际测试也没问题。(代码不要写错 写漏几乎都是没问题的,我是有2个地方错漏了。自己log排查解决的)

          //建议
        1. 在研究服务器部分的时候,实现了一个简单的地图切换功能(moorpg 类型的城镇野外那种切换)
            我的思路是: 服务器 和客户端均在字典里保存场景玩家信息,通过协议去将客户端和服务器的场景玩家移动至对应的字典里。然后场景部分实现对应的销毁和生成。
          在实际操作的过程中,遇到几个问题:玩家进入城镇时,城镇存在其他玩家,进入城镇的玩家需要将已经存在玩家同步到自己的客户端里,而其他玩家则接受这个玩家进入
场景的广播,在其余玩家的客户端中同步进去。离开时同样如此。逻辑上分析没有问题。现在的话。。。。脑子已经混乱了。考虑到玩家和需要同步的玩家的数据太多,有点不知如何下手的感觉了。
        2. 我查阅过相关资料,大型游戏开发这种游戏时,有很多种实现方法:
               (1) AOI兴趣区域算法
               ( 2)  九宫格算法
                 .....
                资料链接附上:    服务器地图同步   https://blog.csdn.net/yyhero1/article/details/81777007
              目前也是毫无头绪

        3. AI 在服务器中的实现,或者说野怪在对应地图中的实现。(在第一版的时候我是通过  房主当做主机,以房主AI为主,房主的AI 不断发消息,同步至其他客户端的)


      以上是出于我想尝试着做一个rpg游戏作为初衷而垂死挣扎做出的各种尝试。希望罗老师不吝赐教。



回复 支持 反对

使用道具 举报

7日久生情
2089/5000
排名
2354
昨日变化

8

主题

767

帖子

2089

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
40014
好友
16
蛮牛币
2811
威望
0
注册时间
2014-8-15
在线时间
540 小时
最后登录
2019-4-14
QQ
2019-2-27 20:18:57 显示全部楼层
极小样本生成国画
回复 支持 反对

使用道具 举报

7日久生情
1629/5000
排名
4093
昨日变化

0

主题

982

帖子

1629

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
254705
好友
1
蛮牛币
1561
威望
0
注册时间
2017-11-16
在线时间
285 小时
最后登录
2019-4-23
2019-2-28 08:08:33 显示全部楼层
6666666666666666666666666666
回复 支持 反对

使用道具 举报

3偶尔光临
172/300
排名
16954
昨日变化

3

主题

71

帖子

172

积分

Rank: 3Rank: 3Rank: 3

UID
309528
好友
0
蛮牛币
727
威望
0
注册时间
2018-12-24
在线时间
58 小时
最后登录
2019-4-22
2019-2-28 20:03:49 显示全部楼层
,操作更方便哦
回复

使用道具 举报

排名
19946
昨日变化

38

主题

219

帖子

850

积分

Rank: 9Rank: 9Rank: 9

UID
53741
好友
38
蛮牛币
2625
威望
0
注册时间
2014-11-6
在线时间
187 小时
最后登录
2019-4-23

专栏作家

楼主 2019-2-28 20:07:27 显示全部楼层
lixiaobai 发表于 2019-2-27 09:27
赞一个,不错。
新书已经入手。看了一下 相比较第一版而言。新增了一个大乱斗的入门训练。坦克大战整合到后 ...

Hi谢谢提出这么多的建议。第一版的代码排版中加了挺多提示,第二版只是用注释,估计是这个问题导致的。

地图切换的思路确实如你所说的,至少需要“请求列表”“进入”“退出”三条协议。其实服务端可以抽象出场景的概念,在场景里面处理在该场景里玩家的逻辑,而客户端仅仅需要保留当前场景的信息即可。这样逻辑也许会明确一些。

AOI的话有几种实现方法,比如灯塔、十字链表等等。AOI算法的目的是减少场景的广播量,但会带来额外的复杂度。可以参考下这个:http://www.cppblog.com/jaxe/archive/2011/06/20/148998.html。

ARPG的AI是最简单的,如果采用第一版的方法,也可以选取场景上某一个玩家做主机去计算,这就属于客户端运算了。如果要服务端运算,首先服务端需要有地图信息,可以通过某些方式把unity的navmesh导给服务端,还要再在服务端实现寻路算法,再在服务器的tick(定时器)中去处理每帧的逻辑就可以了。

其实我还在规划一本关于游戏服务端开发的书籍,不过应该要挺久之后才能写。
回复 支持 反对

使用道具 举报

7日久生情
2907/5000
排名
724
昨日变化

24

主题

460

帖子

2907

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
123323
好友
25
蛮牛币
12034
威望
0
注册时间
2015-9-21
在线时间
1019 小时
最后登录
2019-4-23

认证开发者活力之星一掷千金

2019-3-1 10:01:42 显示全部楼层
tyxxxx 发表于 2019-2-28 20:07
Hi谢谢提出这么多的建议。第一版的代码排版中加了挺多提示,第二版只是用注释,估计是这个问题导致的。

...

老师你新书抓紧出啊。特别期待。
目前来说这本网络编程非常不错。
后续如果有服务器游戏开发的话,应该会更棒。建议里面加入一些常规的 moba rpg 回合制那些 服务器游戏开发的案例。 如果能跟lua 配合那简直beautiful,可以算的上是 所有教程里的精品。跨时代的标志了。
哈哈哈。加油,持续关注你的动态。
回复 支持 反对

使用道具 举报

排名
34881
昨日变化

0

主题

13

帖子

25

积分

Rank: 1

UID
314677
好友
0
蛮牛币
5
威望
0
注册时间
2019-2-24
在线时间
4 小时
最后登录
2019-3-8
2019-3-2 16:40:09 显示全部楼层
谢谢分享{:94:}{:94:}{:94:}{:94:}
回复 支持 反对

使用道具 举报

7日久生情
4919/5000
排名
1669
昨日变化

0

主题

3493

帖子

4919

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
185339
好友
1
蛮牛币
3569
威望
0
注册时间
2016-11-20
在线时间
648 小时
最后登录
2019-4-23
2019-3-4 09:31:28 显示全部楼层
{:104:}
回复

使用道具 举报

5熟悉之中
740/1000
排名
8914
昨日变化
1

0

主题

422

帖子

740

积分

Rank: 5Rank: 5

UID
36289
好友
0
蛮牛币
9
威望
0
注册时间
2014-7-25
在线时间
186 小时
最后登录
2019-4-18
2019-3-4 13:10:14 显示全部楼层
使用机器学习的方法生成国画
回复 支持 反对

使用道具 举报

3偶尔光临
203/300
排名
18789
昨日变化

1

主题

109

帖子

203

积分

Rank: 3Rank: 3Rank: 3

UID
2079
好友
1
蛮牛币
151
威望
0
注册时间
2013-8-15
在线时间
61 小时
最后登录
2019-4-22
QQ
2019-4-2 09:29:07 显示全部楼层
国画游戏是个大卖点
回复 支持 反对

使用道具 举报

5熟悉之中
594/1000
排名
10816
昨日变化

2

主题

399

帖子

594

积分

Rank: 5Rank: 5

UID
310426
好友
0
蛮牛币
471
威望
0
注册时间
2019-1-2
在线时间
97 小时
最后登录
2019-4-23
2019-4-3 08:51:37 显示全部楼层
做Unity开发的方向在哪
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则