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

15
回复
1357
查看
打印 上一主题 下一主题
[ 复制链接 ]
排名
19947
昨日变化

41

主题

222

帖子

865

积分

Rank: 9Rank: 9Rank: 9

UID
53741
好友
39
蛮牛币
2661
威望
0
注册时间
2014-11-6
在线时间
196 小时
最后登录
2019-6-18

专栏作家

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

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

x
游戏《绘真·妙笔千山》以其独特的国画美术风格吸引玩家,《轩辕剑天之痕》《武林群侠传》也偏向国画画风,国画和游戏有着多种结合的可能。绘制国画需要深厚的功底,还需要画家对生活有所感悟,若非几十年如一日,很难画出韵味。那么,有没有可能使用机器学习的方法生成国画,于是做了一次小小的尝试。只能说是尝试吧,并不成功。
效果
下面这幅图中有几款山石,两颗松树,左上角有隐隐约约的提款。原始图像256*256,这里放大了两倍。

下面这幅图隐隐约约可以看到一人骑马在古道上,很恰合“古道西风瘦马”这诗句。

下面几幅有山有水有树,看上去还像那么一回事。

算法和训练
使用最原始的DCGAN,出于各种限制,训练集非常小,用了27张陈少梅的山水画。

下面是其中一张,大小为4000*2075,使用256*256的crop。某种程度上说,原始图片比较大,给了较多采样的可能,当然也由此分辨率无法设置太高。从训练的结果上看,“国画风格”大概是学到了,布局就不可能学到了。

不足
上面几张较好效果的图片是经过挑选的,实际生成有很多效果不好的图片。训练非常不稳定,无法收敛;同一次训练下,多样性不好。


整个训练集中只有两张有马的图(如下图),生成的“古道西风瘦马”和其中一张太像。不过256*256的crop对全图来说其实非常小(如下图红色方框),为何会整张图很像?

下一步
训练集太小导致各种难以收敛,收集更多的训练集才能进一步优化。可以尝试另外一些gan结构,比如PGGAN去生成高清的图片。

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










点评

tjp
不懂不懂  发表于 2019-6-16 22:32
7日久生情
2268/5000
排名
2252
昨日变化

0

主题

937

帖子

2268

积分

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

UID
163777
好友
2
蛮牛币
811
威望
0
注册时间
2017-2-27
在线时间
707 小时
最后登录
2019-6-26
沙发
2019-2-27 08:47:42 只看该作者
6蛮牛粉丝
1100/1500
排名
2066
昨日变化

0

主题

230

帖子

1100

积分

Rank: 6Rank: 6Rank: 6

UID
26073
好友
1
蛮牛币
4174
威望
0
注册时间
2014-5-21
在线时间
202 小时
最后登录
2019-6-26
板凳
2019-2-27 08:59:19 只看该作者
怪我学识太浅,听不懂
7日久生情
2944/5000
排名
723
昨日变化

25

主题

461

帖子

2944

积分

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

UID
123323
好友
25
蛮牛币
12116
威望
0
注册时间
2015-9-21
在线时间
1055 小时
最后登录
2019-6-26

认证开发者活力之星

地板
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日久生情
2123/5000
排名
2353
昨日变化

8

主题

782

帖子

2123

积分

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

UID
40014
好友
16
蛮牛币
2910
威望
0
注册时间
2014-8-15
在线时间
559 小时
最后登录
2019-6-26
QQ
5#
2019-2-27 20:18:57 只看该作者
极小样本生成国画
7日久生情
1868/5000
排名
4092
昨日变化

0

主题

1184

帖子

1868

积分

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

UID
254705
好友
1
蛮牛币
1725
威望
0
注册时间
2017-11-16
在线时间
322 小时
最后登录
2019-6-26
6#
2019-2-28 08:08:33 只看该作者
6666666666666666666666666666
3偶尔光临
188/300
排名
16954
昨日变化

3

主题

75

帖子

188

积分

Rank: 3Rank: 3Rank: 3

UID
309528
好友
0
蛮牛币
1072
威望
0
注册时间
2018-12-24
在线时间
70 小时
最后登录
2019-6-25
7#
2019-2-28 20:03:49 只看该作者
,操作更方便哦
排名
19947
昨日变化

41

主题

222

帖子

865

积分

Rank: 9Rank: 9Rank: 9

UID
53741
好友
39
蛮牛币
2661
威望
0
注册时间
2014-11-6
在线时间
196 小时
最后登录
2019-6-18

专栏作家

8#
楼主 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日久生情
2944/5000
排名
723
昨日变化

25

主题

461

帖子

2944

积分

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

UID
123323
好友
25
蛮牛币
12116
威望
0
注册时间
2015-9-21
在线时间
1055 小时
最后登录
2019-6-26

认证开发者活力之星

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

...

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

0

主题

13

帖子

25

积分

Rank: 1

UID
314677
好友
0
蛮牛币
5
威望
0
注册时间
2019-2-24
在线时间
4 小时
最后登录
2019-3-8
10#
2019-3-2 16:40:09 只看该作者
谢谢分享{:94:}{:94:}{:94:}{:94:}
8常驻蛮牛
5306/10000
排名
1669
昨日变化

0

主题

3794

帖子

5306

积分

Rank: 8Rank: 8

UID
185339
好友
1
蛮牛币
3599
威望
0
注册时间
2016-11-20
在线时间
734 小时
最后登录
2019-6-26
11#
2019-3-4 09:31:28 只看该作者
{:104:}
5熟悉之中
751/1000
排名
8915
昨日变化

0

主题

425

帖子

751

积分

Rank: 5Rank: 5

UID
36289
好友
0
蛮牛币
18
威望
0
注册时间
2014-7-25
在线时间
194 小时
最后登录
2019-6-3
12#
2019-3-4 13:10:14 只看该作者
使用机器学习的方法生成国画
3偶尔光临
236/300
排名
18791
昨日变化

1

主题

121

帖子

236

积分

Rank: 3Rank: 3Rank: 3

UID
2079
好友
1
蛮牛币
297
威望
0
注册时间
2013-8-15
在线时间
82 小时
最后登录
2019-6-21
QQ
13#
2019-4-2 09:29:07 只看该作者
国画游戏是个大卖点
5熟悉之中
850/1000
排名
10817
昨日变化

3

主题

611

帖子

850

积分

Rank: 5Rank: 5

UID
310426
好友
0
蛮牛币
978
威望
0
注册时间
2019-1-2
在线时间
140 小时
最后登录
2019-6-25
14#
2019-4-3 08:51:37 只看该作者
做Unity开发的方向在哪
4四处流浪
471/500
排名
7018
昨日变化

3

主题

107

帖子

471

积分

Rank: 4

UID
293049
好友
1
蛮牛币
2056
威望
0
注册时间
2018-8-9
在线时间
173 小时
最后登录
2019-6-26
15#
3 小时前 只看该作者
大佬大佬
您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则