Posts by 51posts:

对外担保未经董事会决议,股东要求董事长赔偿,法院为何驳回?

合伙指南 | 作者:李立律师 这是李立律师博客和合伙指南公众号第951篇文字 对外担保未经董事会决议,股东要求董事长赔偿,法院为何驳回? 一 昨天写了个笔记,题目是《董事会决议让公司承担5.4亿担保责任,大股东受益,法院判决议无效》,聊了一个很具体的案例,从中得出一个结论,那就是:(1)没有经过法定的内部决策表决程序的,原则上是无效的,除非相对人为善意或者有法定例外情形;(2)但是,经过法定内部决策程序的,担保未必就一定是有效的,仍然要判断其是否有违反其他法律法规的禁止性规定。 今天继续往细了说:假如这家公司没有关于对外担保的内部决策程序规定,那么该怎么认定呢? 公司对外提供担保,应当要经过内部决策表决程序,法律依据此处再列一下,《中华人民共和国公司法》: 第十六条 公司向其他企业投资或者为他人提供担保,依照公司章程的规定,由董事会或者股东会、股东大会决议;公司章程对投资或者担保的总额及单项投资或者担保的数额有限额规定的,不得超过规定的限额。 公司为公司股东或者实际控制人提供担保的,必须经股东会或者股东大会决议。 前款规定的股东或者受前款规定的实际控制人支配的股东,不得参加前款规定事项的表决。该项表决由出席会议的其他股东所持表决权的过半数通过。 注意一下《公司法》这一条第1款里的措辞“依照公司章程的规定,由董事会或者股东会、股东大会决议”。这里强调的是“依照公司章程的规定”。而这一条的第2款,关于为公司股东或者实际控制人提供担保,并没有强调是依照公司章程中的决议程序,而是直接以法定的形式规定必须经股东会或者股东大会决议。对比这2款立法不同的措辞,再对照这2款针对的不同的担保情形可能对公司利益的损害风险程序,可以说,第1款中的“依照公司章程”是立法时有意设置的条件。 也就是说,在一般的对外担保情形时,要适用《公司法》第十六条第1款的规定,首先公司的章程应当对担保有明确规定,其次才是认定是否按照公司章程的规定进行决议。 假如公司章程里没有明确约定关于对外担保的决策程序呢?那么,就不能适用《公司法》第十六条的第一款的规定。 今天说的这个具体案例里,涉案公司的公司章程里,就是没有规定关于对外担保的决策程序。 二 甲公司,共5名股东,4名股东长期居住在台湾,另1名股东宣某担任公司董事长以及法定代表人。 股东之一的柯某,依据《公司法》的股东代表诉讼制度,向人民法院起诉,要求判决被告宣某赔偿第三人甲公司损失人民币34967161.18元。 柯某的起诉理由是: 公司法定代表人为宣某。自1993年起宣某担任公司董事长,自1999年起宣某担任总经理,负责甲公司的日常经营管理事务。因包括柯某在内的其他四位股东长期居住在台湾,从九十年代开始各项业务稳定后公司开始交由宣某一人管理,其他股东并未实际参与经营,日常经营及对外投资、重大资产的处置决策均由宣某一人操作决定,根据甲公司章程规定,董事会为公司最高权力机关,重要事宜均需董事会决定,但宣某在任职期间多次未经董事会决议擅自作出有损公司利益的重大决定,造成公司巨大损失。 2007年宣某在未经公司董事会批准的情况下通过债权股方式对美国A公司投资美元240万元,并担任A公司董事长,在A公司经营状况不断恶化的情况下仍然向该公司供货导致甲公司从2007年开始利润出现成断崖式下跌。2012年4月到2016年11月期间,宣某未经董事会决议以甲公司为借款人向银行贷款美元300万元,同时以甲公司名义向银行开立一份金额为人民币1000万元保函及两份金额为美元140万元保函/备用信用证擅自为A公司提供担保。由于宣某未尽忠实勤勉义务造成甲公司损失高达人民币34967161.18元,因甲公司未设监事会或监事职位,为维护甲公司合法利益由柯某作为股东代表提起诉讼,要求宣某承担赔偿责任。因宣某担任甲公司法定代表人,柯某仅为甲公司股东,相关证据处于宣某控制之下,故本案应适当适用举证责任倒置规则。 宣某的答辩理由是: 宣某一直是甲公司的小股东,宣某担任甲公司董事长及总经理期间的行为未违反忠诚勤勉义务,甲公司章程对需要董事会决议的事项有明确列举,公司的正常事务都是由股东商量着办,作为甲公司董事长及总经理,绝大多数的公司文件由宣某签字并加盖公司公章,严格来说甲公司成立以来一直没有形成过完整的董事会决议,只是在分配利润时有时间和精力的股东到场签字确认。对甲公司向华美银行贷款及为A公司担保的事实予以确认,但甲公司成立以来A公司基本是其唯一客户,甲公司的全部利润都来源于A公司,2007年甲公司以实物投资方式投资A公司并持有该公司40%的股权。2007年以来甲公司利润下降主要有两个原因,一是甲公司对外投资增加,例如……;二是2007年底受美国次贷危机影响,A公司经营起落较大,特别是2012年后美国受电商冲击,作为甲公司唯一客户的A公司经营受到巨大影响,导致甲公司利润下降。至于担保问题,因A公司是甲公司唯一销售命脉,为了维持A公司及甲公司的运转才提供担保,甲公司为A公司提供担保以后对A公司的销售额依然高达人民币1.4亿元之多,很难说甲公司为A公司提供担保决策错误。本案柯某之所以提起诉讼主要是因为甲公司连续多年未分配利润导致股东存在不满情绪,甲公司最终经营成果如何及各股东是否需要承担责任应进行清算审核,因此柯某的诉讼理由目前不能成立,应驳回其诉讼请求。 一审法院认为: ……本案的争议焦点为宣某未经甲公司董事会决议向华美银行借款及为A公司提供担保是否属于股东未尽忠诚勤勉义务并因此需要承担赔偿责任。…… 本院认为,柯某的诉讼请求不能成立,理由如下: 第一、甲公司章程对董事会决议事项有明确列举,但并未明确列举公司对外担保事项属于董事会决议事项范围,虽然董事会决议范围最后有其他重大事项这一条款,但柯某认可包括其在内的四位股东长期居住在台湾,甲公司由宣某负责公司日常事务,后期并未实际参与公司经营,根据柯某目前提供的证据无法证明甲公司成立以来形成了行之有效的董事会议事机制,故宣某对甲公司上述行为所作出的决定不宜认定属于必须由甲公司董事会决议事项; 第二、根据各方陈述,长期以来A公司是甲公司的最大客户,甲公司的利润基本来自A公司,且2007年以后甲公司成为A公司的股东之一,作为A公司母公司的甲公司为A公司担保也是为了维持A公司以及甲公司正常运转,属于正常的商业行为,甲公司为A公司担保并不必然导致甲公司利益受损; 第三、2008年以后A公司受美国次贷危机及电商冲击等多重因素影响经营困难,致使甲公司对A公司担保所产生的债权无法得到清偿而产生巨大损失,目前A公司已经破产,甲公司已经向A公司申报债权,可见宣某并未怠于履行忠诚勤勉义务,甲公司的损失并非其为A公司提供担保必然所致; 第四、关于柯某主张因目前案件相关材料在宣某,本案应适当适用举证倒置规则,应由宣某承担举证责任,本院认为柯某作为甲公司的股东,其欲获取相关材料可以行使股东知情权等其他救济方式,故本案不宜使用举证责任倒置规则。 综上,本院认为柯某目前提供的证据不足以支持其诉讼请求。根据《中华人民共和国公司法》第一百四十八条、第一百四十九条,《中华人民共和国民事诉讼法》第六十四条、第二百五十九条、第二百六十九条,《最高人民法院关于适用〈中华人民共和国民事诉讼法〉的解释》第九十条规定,判决如下:驳回原告柯某的诉讼请求。 一审判决的主要理由,归纳起来主要就是3点:1、对外担保不是该公司董事会决议事项;2、对外担保是基于特殊关系,有利于公司;3、公司损失不是担保必须所致的。 此案后经二审判决。 二审认为: 经查,甲公司除宣某外的其他四位股东均长期居住在台湾地区,一直以来均是由宣某负责甲公司的日常经营管理等各项事务,其他四位股东并未参加甲公司的实际经营,仅在每年年初分配利润时各股东才到场签字确认,故甲公司并未形成有效的董事会固定议事机制。 甲公司系A公司占股40%的股东,两者是关联公司。宣某兼任A公司的董事长,但其个人并非A公司的股东。宣某作为甲公司的股东,其自身与甲公司的利益息息相关,其主观上并没有损害甲公司利益的故意。且A公司是甲公司最大的客户,甲公司的销售利润基本上来源于A。A公司的经营状况好坏与甲公司的利益直接相关联。A公司在2008年之后因受美国次贷危机及电商冲击等多重因素影响而经营困难,甲公司为A公司提供担保也是为了A公司能够正常运营,最终也是为了甲公司自身的利益。故甲公司为A公司提供担保并不必然会导致甲公司的损失,不能将甲公司为A公司提供担保视为一般情形下的公司对外担保。 现A公司已经破产,甲公司已经向A公司申报了债权。宣某多年来担任甲公司的董事长和总经理,甲公司的经营情况还不错,在案证据显示1997年至2006年期间,甲公司对公司利润进行了分配。2017年4月10日,甲公司股东会决议确认公司还有利润人民币1400余万元可由股东分配,并确认甲公司终结经营,对甲公司及其关联公司财务进行审计。 综上,宣某并未怠于履行忠实勤勉义务,不应对甲公司的损失承担赔偿责任。 三 判决没有认定宣某有怠于履行忠实勤勉义务的行为,其重要原因在于甲公司与A公司之间的特殊关系。“甲公司的销售利润基本上来源于A公司”这个事实,决定了该担保更有可能被法院理解为是为了公司的利益。假如没有这个特殊的事实,那么这个案件的判决未必就是如此。但是,法院强调“甲公司的章程中对于担保没规定在董事会决议事项里”,在法律依据方面,是对《公司法》第十六条第1款中的“依照公司章程的规定”的响应。 无论如何,在公司章程里留下这样的缺失,是错误。公司章程,至少应当对公司的重大事项的决策程序作出明确可行的规定。公司的重大事项,除了《公司法》明确规定的重大事项以外,诸如公司三会的运作和议事程序、公司高管的选举更换、重大交易、关联交易、对外担保等等都应当一一进行明确规定。

空谷山剑 ┃ 山渡摄影本色研修班第二期

KongguShanjian Photography  影像终将脱离现实创造它的独立世界。 每天触动我的画面是细碎成一片一片的。 记录它们,一直是无目的、无意识的日常行为。 「導師日常隨拍」     我一直将拍摄影像视为人生的副产品, 不断拍摄不断回望过往的作品, 就像不断地剖析自己。 KongguShanjian Photography 2018 艺术创作往往是你越有这样那样的想法时, 就越是无法如期实现。 把一切都交给自然或许是最明智的选择, 我最终放弃计划创作 将一切托付给自然规律中的偶然性。 / 「導師介绍」 空谷山剑 想要和作品一同进入永恒的作者 必须成为无法被替代的作品本身                      「導師日常視頻記錄」 影像大多时候就像表达的载体, 摄影让时间成为流动在镜头下的诗意。  现实中的世界如浮光掠影,有些感受到的, 如果不去记录下来往往无法被人察觉。 第一期学员清晨茶会 【往期课堂花絮】      【 课程简介】 为期三天的研修班将从零开始 系统的解析画面镜头语言和情绪传达, 绝大部分的摄影学习者具备了光影与构图的形式美之后, 一直受困于画面无法表述自我思考与情绪。 这也是困扰摄影学习者继续提升的主要瓶颈。 让影像超脱于物像之外传达个人的感受 【導師作品】 《和光》     空谷山剑 | 山渡摄影本色研修班  第二期 12月11日(周六) […]

中老铁路通车!可以坐高铁到西双版纳避寒过冬啦!

西双版纳终于通高铁啦!北起云南昆明,南至老挝万象的中老铁路,全长1,000多公里。而连接玉溪市与西双版纳磨憨口岸的玉磨段于12月3日正式售票。从早到晚车次多达22个,这意味着西双版纳正式进入高铁时代! 「玉磨铁路」通车,将滇南的美景收入囊中。从昆明出发,途经玉溪、峨山、元江、墨江、普洱,最终抵达西双版纳,最短只需3小时24分钟。白天去滇池边喂海鸥,晚上就能到版纳逛夜市,沿途还能去普洱的小熊猫咖啡庄园打个卡。 再不用转机或坐7小时长途大巴啦,往后西双版纳可以并入「昆大丽」一起玩!就连土生土长的当地司机都感慨:「做梦都没想到,有一天高铁会造到版纳来」。不得不夸一下,咱大中国的基建实力之强。 西双版纳的冬天感觉比海南还舒服,街头小资又不输泰国。而且正值最舒服的季节,版纳却是实打实地人少景美,游客一点都不多,机票和酒店更是意想不到的便宜。11月底又去了一趟,先奉上差不多5,000字、热乎乎的攻略啦! 西双版纳 vs 玉磨铁路 西双版纳傣族自治州位于彩云之南,首府为景洪市。在傣语里,「西双」即十二,「版纳」直译为「十二千块稻田」,「西双版纳」实际上是指古勐泐国的十二个行政区域。 这座北纬21度的温暖城市,真的去过一遍就会爱上。穿梭于傣族村寨寺庙,去热带雨林感受绿野仙踪,到植物王国看王莲棕榈、百花齐放……左手「亚马逊」,右手「东南亚」,现在坐高铁就能一键打卡! 玉磨铁路在西双版纳域内设有5座车站,野象谷站、西双版纳站、橄榄坝站、勐腊站、磨憨站。一站一景,将西双版纳较为分散的几个景点都串联了起来。 📍 野象谷站 野象谷 在中国,要看亚洲野象要到西双版纳,到了西双版纳,你得去野象谷。野象谷位于西双版纳的北线,玉磨铁路专设了「野象谷站」,现在可以乘着高铁去看大象啦。 铁路特意避开了亚洲象主要活动区域,通过延长隧道、以桥代路,设置隔离栅栏等措施,保证大象宝宝们不受干扰。 野象谷有我国第一所驯象学校,日常有大象表演不要错过,也可以自费牧象。这里的野象大约有50群,300只左右,平均4.4天有一群大象出没,在山谷里洗澡和嬉戏。如果运气好的话,能在丛林中偶遇几只野象漫步~ 原始森林公园 西双版纳的原始森林公园,藏着《司藤》同款热带雨林(看剧的时候就猜到是这儿),好多名场景都是在这儿拍的,真的每一帧都美似绿野仙踪。 微博@阿夏安心游 入园先看孔雀放飞表演,随后到哈尼族村落跳竹竿舞,而后是最为热闹的泼水庆典,傣迪蹦起来。最后来到媲美亚马逊的沟谷雨林,如果你喜欢探险,可以体验易烊千玺也玩过的丛林飞跃。 看不尽的望天树下,光影流转斑驳地打在青苔缝隙里,相机里都是极致的绿色。歪叶榕物竞天择,展示着植物绞杀现象,冲天高的百米擎天柱让人叹为观止,针叶密布、藤蔓缠绕、流水潺潺,美地像不属于这个星球的秘境。 📍 西双版纳站 曼听公园+总佛寺 小红书@KAKA 曼听公园曾是傣王的御花园,是西双版纳最古老的园林。傣味十足的的金塔楼阁、宫廷庙宇,这里四季枝繁叶茂,花开如春,是西双版纳人的「灵魂之园」。 最佳机位给你们找好了——爬上御象咖啡馆,360度随便拍。 砖红色的建筑与古树和谐得像是一幅油画。台阶上极具特色的白龙扶梯与傣服最搭,听说当地新人的婚纱照都在这儿拍。 从二楼平台俯瞰,前头是爱丽丝梦游仙境般的秘境后花园;后方就能看到那座标志性的白庙,飘着唯美的纱幔;在底下的大草坪肆意奔跑,满满的法式电影既视感。   从曼听公园步行10分钟就能到总佛寺的后门,途中会路过网红大白塔,通常大家都并在一起玩。   总佛寺是一座南传佛教寺庙,也是西双版纳等级最高的佛寺。 远远地就被它金碧辉煌所震撼,金塔和巨佛被棕榈树萦绕,庙宇的屋檐又带有浓郁的东南亚风情,极具有辨识度。西双版纳大大小小的寺庙众多,总佛寺的香火最为旺盛,在当地人心中最为崇高与神圣。 告庄西双景 前面解释过,西双在傣语里是「十二」的意思,告庄西双景就是「九塔十二寨」的意思。大金塔是它的标志,星光夜市让它在全国范围内都一战成名。不仅还原古时景洪的繁华盛景,还有年轻人喜欢的摩登前卫,为景洪的江北注入了许多新鲜的活力。 塔高66.6米的景洪大金塔,又名缅甸大金塔,寓意着「一江(镰仓江)连六国」,是九塔之一。作为地标性建筑,不论你在哪个角落都能瞻仰到它,白天夜晚,各个角度都有不同的美。 大金塔中心是一座贝叶经博物馆,四周的小塔分别代表着缅甸仰光、泰国清迈、泰国景莱与老挝琅勃拉邦。入内参观记得不要穿过分暴露的服装。 星光夜市 湄公河·星光夜市,已经成为西双版纳必打卡的网红之地。据说这里是东南亚最大的夜市,说真的规模一点不输曼谷那些!虽然可能80%都是来拍「199元傣式写真套餐」的,但是不妨碍它的热闹和有趣。 西双版纳白天懒洋洋的,到了晚上整个城市仿佛瞬间苏醒了过来。一入夜,整个夜市被繁星般的灯光点亮了,美轮美奂,闪着点点星光,像个大型梦幻游乐园。 五花八门的手工艺品看得琳琅满目,傣族风情的小物件应有尽有。六国水上市场有专门的乘船位,可以租个水果船夜游告庄。 199写真其实很坑,真想拍照建议自己买一套,有很多卖傣服和配饰的小摊位,50元一套搞定,记得砍价。爬上大金塔拍照可以俯瞰到整个夜市的全景。对了,别忘记带补光灯…. 不建议在夜市里头吃饭哦,价格虚高不说,味道也没有外头的好。这里推荐一条私藏的彩虹街给你们——叫赶摆街。就在告庄景兰附近,我去的时候一个人都没有!!白天拍的话肯定很出片。 版纳现在最红的餐厅——春武里就在赶摆街上,虽然是网红店了,但菜品口味真的没有踩雷,我愿意为了超大份红茶绵绵冰再去一趟版纳每天11点30和16点30会在大众点评放号,要去吃的话记得提前取。 告庄西双景里的很多街道也很小清新,超好拍很好逛,藏着许多设计师餐厅和咖啡馆和民宿,有清迈宁曼路内味了,小资情调拉满。 📍 橄榄坝站 傣族园 位于橄榄坝的傣族园,占地336公顷,完整地保存着5座傣寨。分别是曼将(篾套寨)、曼春满(花园寨)、曼乍(厨师寨)、曼嘎(赶集寨)、曼听(宫廷花园寨)。 漫步于傣族园,精巧别致的傣家竹楼和佛寺古塔掩映在绿树丛中,吊脚楼边栽种着芒果、香蕉、木奶果、蕃木瓜等等热带水果,还有高大挺拔的椰子树、贝叶棕树和槟榔树,洋溢着傣家生活的气息。 曼春满古佛寺拥有1400多年历史,红色的建筑在阳光普照下耀眼无比,历代傣王都曾来此朝拜。 另外,千万别错过傣族园的泼水狂欢!热情的泼水活动已经成为傣族园的保留项目。每天有两场,第一场14:50,第二场16:30,在这里,天天都是泼水节! 曼远村 去年看《向往的生活4》就被默默种草的这个恬静美好的世外桃源——曼远村。就在距离景洪市内45km,大约1小时车程的橄榄坝,高铁竟然就在附近设站,打卡安排上。 曼远村是传统的傣族村寨,村子不大,就80户,虽然在傣族的村寨中面积不大,但四周散落着特色的吊脚楼,这里以树为信仰,家家都种着花,村民以种植芒果等热带植物为生。 […]

DnD 5e: The Best Undead Warlock Build | CBR

Like real life, the characters of Dungeons & Dragons face the constant cycle of life and death. From birth, they find themselves scrambling to avoid the inevitable. While some choose to keep battling through as though it doesn’t matter, a select few seek to overcome death itself and find themselves searching for answers. Warlocks have […]

A week in security (Nov 29 – Dec 5)

Last week on Malwarebytes Labs: CronRAT targets Linux servers with e-commerce attacks Hackers all over the world are targeting Tasmania’s emergency services Massive faceprint scraping company Clearview AI hauled over the coals Most people aren’t upgrading to Windows 11: Not the end of the world Have you downloaded that Android malware from the Play Store […]

長褲、長裙也無需改短!Global Work 為嬌小女生而設的 EiiS 溫柔秋冬系列正式登場

相信許多身形嬌小的女生都會有同感,那就是要入手一條合適的長褲或長裙絕不容易!因為儘管找對腰圍,但是衣服的長度卻往往不合身,往往需要找裁剪師傅幫忙,實在令人氣餒。不過日本品牌 Global Work 卻十分貼心,早前宣布推出專門為嬌小女生而設的「低身長」系列 EiiS,近日更釋出了全新的秋冬單品,一起來看看吧!   在 Instagram 查看這則貼文   GLOBAL WORK(グローバルワーク)(@globalwork_official)分享的貼文 Global Work 在今個秋冬共推出了 7 款全新單品,包括多色毛衣、長袖針織連身裙、西褲以及大衣等,全都是百搭的基本款,既能夠塑造出溫柔斯文的上班造型,或甜美的約會造型。儘管有不少衣服都是長版剪裁,不過卻特意配合身型嬌小的女生,套在 155 cm 的模特兒身上也十分合適,不會出現衣衫過長的情況。   在 Instagram 查看這則貼文   GLOBAL WORK(グローバルワーク)(@globalwork_official)分享的貼文 這系列只會在 Global Work 的官網上發售,並僅提供為身高 150 cm 而設的 XS 以及 為 155 cm 而設的 S 碼。   在 Instagram 查看這則貼文   GLOBAL WORK(グローバルワーク)(@globalwork_official)分享的貼文   在 Instagram 查看這則貼文   GLOBAL […]

Steam热门游戏《帝国神话》分享:如何用虚幻引擎4打造大型开放世界生存沙盒网游?

GameLook报道/“Unreal Open Day虚幻引擎技术开放日”是由 Epic Games 中国倾力打造的面向虚幻引擎开发者的技术分享活动,是引擎行业内规格最高、规模最大、阵容最强的年度盛会之一。 在经历了2020年疫情的影响改为线上后,“Unreal Open Day 2021 虚幻引擎技术开放日”时隔两年重新回归线下,将于12月2日至12月3日在上海阿纳迪酒店正式举办,此次活动精心准备了主旨演讲和技术演讲共50场以供前来的观众倾听学习,务求将最前沿的虚幻引擎技术与案例解析,直接带给全球虚幻引擎开发者与关注者。 在第二日(12月3日)的活动中,来自安琪拉游戏的两位引擎开发工程师张宇和郭嵩从产品研发的角度出发,向我们分享了他们使用虚幻引擎4进行游戏开发的过程,也让我们知道《帝国神话》这样一款开放世界沙盒游戏创作过程中的诸多故事。 《帝国神话》是由安琪拉游戏打造的一款以架空古代东方大陆为背景、高自由度玩法为核心的冷兵器战争沙盒网游,于今年的11月18日在Steam平台正式发售,当天便登上了国区、美区及全球热销榜第一,当目前为止这款游戏的最高在线人数已经达到了4.3万人,各方面表现都十分出色。 以下为演讲实录: 张宇:Hello,大家早上好,我是《帝国神话》项目组的引擎程序,我叫张宇。 《帝国神话》在两周之前刚刚发售,时间还比较短,在座的各位可能还不是很了解这款游戏,所以这里有一个我们游戏的宣传片,想让大家看一下,让大家简单了解一下这个游戏类型。 就像视频里看到的,《帝国神话》它是一款开放世界的沙盒生存网游。我从这个项目一开始就在这个项目里,主要负责的是前中期美术场景制作过程中流程和规范的制定、图形效果的研发以及后期的一些性能优化的工作。 今天主要想分享一下《帝国神话》里64平方公里的开放世界是如何制作的,主要分为植被、天气、水体还有角色表现几个部分,其中天气部分会再介绍一下里面的云、里面的雨,还有闪电几种效果的做法。 首先是植被的程序化生成和快速迭代。在整个游戏世界里我们做了8种的植被生态,比如有平原、沼泽、雨林、沙漠等等。 我们的实践方案是基于原生虚幻引擎4的,是基于原生虚幻引擎4的AProceduralFoliageVolume去实现的,它相比目前比较流行的Houdini的程序化生成方案,它整体比较简单。 它的优点在于,第一它是基于原生虚幻引擎4实现的,改动代码不多;第二,它的植被的规则也很容易去自由的拓展;第三它可以流式加载,比较适合大世界的项目。另外我们还是开发了相应的美术工具,美术在配置完成后的操作基本都是一键生成,可以比较快的迭代。 我们是这样做的:首先,美术会借助外部DCC去生成它指定的Mask分布图,像这样子,然后会去配置一下这张Mask分布图对应的游戏世界内,世界范围的生存范围,然后在实际生成每个Instance的时候,会根据这个Instance在世界范围内的生成位置,换算成Mask接头的UV坐标,然后就采样权重值来决定这个Instance是否生成。你们可以看到效果还是比较精确的,而且它相比原生虚幻引擎4自带的LandscapeLayerWeight的功能,它更加灵活,因为这张贴图美术可以反复的迭代修改。 然后下一步是去配置ProceduralFoliageSpawner的依赖关系。因为上一步我们得到的所有的Foliage它只考虑了自己的生存位置,现在我们希望它同时考虑到它周围的Foliage,这样当它们结合在一起的时候,能感觉到更加的错落有致一点。 所以我们的做法是自定义了一些生成的规则,比如我们可以自定义Foliage之间的亲疏关系,在这个草的FoliageType面,它是配置了想靠近这个灌木2.5米,同时又想远离这个灌木1.5米,这里还可以加很多。所以最后的效果就是,这个草它希望生成在这棵灌木周围2.5米到1.5米的范围,然后这个生成规则会同时适用于笔刷模式还有程序化生成的模式。所以这里能看到用笔刷刷的时候,在左边超出灌木刚刚限定范围2.5米的范围,是生成不出来这个小草的。 美术配置完所有的FoliageType的依赖关系,下一步使用Spawne Manager去一键生成的到子关卡。 上一步所有的Foliage已经按照我们希望的生成规则,有了合适的生成位置,但是有个问题是:笔刷模式是可以默认生成到子关卡里,但是Procedures生成出来的默认都在永久关卡,所以这显然更适合大世界的项目,所以我们也需要它、希望把它放到子关卡来流入流出。 我们的修改是让美术是配置了每一个FoliageSpawner想生成的关卡的名字,然后我们在生成的时候会根据这个名字去找到、并把这个关卡可以设置成CurrentLevel,然后把这个Instance加入进去就可以。 另外这里额外会处理一些比如窗口的数量显示,还有植被选择等功能,能让它们也能支持,比如显示当前关卡的、还有显示整个大世界的区分来处理。最后效果是这样子的,美术只要点一下这个Spawner按钮,就可以一键生成所有指令。 实际的生成过程没有这么快,有减去一部分,但是因为整个过程是离线的,所以还可以接受。 下一步是昼夜循环和天气系统。《帝国神话》里目前实现了15种的动态天气,比如有晴天、多云、阴天、雨天。 我们这方面刚开始的需求是这样的:首先要支持这么多天气的无缝过渡,另外我们在实验的时候也需要考虑,每种天气元素它的性能预算,同时需要考虑它的应用性,因为我们希望我们尽量能够不用运行游戏,在编辑模式下就可以预览系统这样,方便美术编辑。另外因为我们做的是网游,还需要考虑这些闪电效果的同步,希望所有效果能在客户端保持一致。 这是我们游戏的昼夜循环,这是我们游戏的雷雨天气,这是实现这些天气效果我们用到的所有的天气元素。大部分都是虚幻引擎4自带的,特殊一点是我们会用的三个方向的光源,一个日光、一个月光、还有一个专门用来做闪电的光源。另外云也有两个,一个是高层云,一个是体积云,后面会介绍到,另外一个就是我们专门写了一个专门做用来做雨天表现的雨效管理器,后面也会介绍到。 然后为了实现天气的平滑过渡,我们给美术开发了一个工具,我们会让美术把他们所有用到的天气的属性都汇总起来,然后每个属性数据会去对应一条曲线,单值的会去对应一条FloatCurve,多值的比如VectorCurve它会去对应一条LinearColor。 然后每个天气会有一组24小时循环的数据,它包含了一天24小时所有用到的数据,比如天光、日光、月光、云雾等等都在这里。 然后每个天气还会有一组过渡的数据。因为比如说雨天开始的时候,地面逐渐变湿的强度、雨势逐渐变快速度,这些都是一天24小时会用到的属性,它们就会存放在这里。 美术需要配套的配置的就是这些,然后我们为了方便美术配置,我们修改了曲线使数据可以继承,主要是修改下面两个数。 第一处是让副类修改的时候,可以在子类的时候可以检查到,看看是否会有不一致;第二个是让副类的修改的时候可以通知到子类当中,然后这样修改的好处是说,美术可以就是像程序继承一样,它可以只修改特定的一部分来减少他的工作量。 程序实现方面我们会根据美术配置的Porperty名字在运行时间找到这个Porperty,缓存下面这个指针,然后随着游戏内时间的进行,会去读取美术配置的Curve里面的数据,直接设置到这个Porperty指向的Value。 然后在客户端天气切换,或者它去切换了下一个生态区域的时候,会去生成一份场景快照,其实就是把当前场景的所有天气元素,他们的属性给缓存下来。 然后在下一个天气开始的一段时间内,再去根据多个SnapShot、再根据它们的优先级进行插值,这样就基本实现了天气的平滑过渡。 下一个是云。《帝国神话》里面目前有三层云,这些是层云、积云还有高层云。 我们刚开始的需求是这样的:首先它需要形态上足够丰富,能够适应这么多的天气,而且对它们之间的动态过渡;第二个是同时能保证性能在2毫秒以内,因此虽然虚幻引擎4在这方面它的完成度已经很高,但其实想用好,满足这些需求,都需要参考业界的一些分享。 这是我们目前项目的体积云的材质。右边是闪电和着色的部分,左边是塑形的部分——是体积云最重要的部分,也是我想重点介绍一下部分。 塑形整体分为两部分:基础塑形和侵蚀,这方面也参考了《地平线》或者《荒野大镖客》的一些做法,因为要满足这些需求的话,其实还是只能按照这些套路来做。 第一步是去采样一些基础的NoiseTexture,配置不同类型的Perlin和Worly噪声,第二部会去采样HeightCurveAtlas,它是128*1的大小,它存储的是云层海拔高度,还有云层密度的映射。 第三步是做Height和Density的重映射,可以重新去调整、裁剪或者做拉伸,这个步骤可以反复几次。 然后就可以得到我们基础塑形的结果——ConservativeDensity,这就是基础塑形的输出。 然后在它的基础上再做DetailNoise的侵蚀,这一步调整的步骤和上面几个类似,但是因为现在我们得到的只能是一个3D的结果,所以采样的是一张VolumeTexture,就它之前使用不同的密度去采样了多次。 其实看虚幻引擎4的体积云的实现,能感觉到它已经对于他引擎能控制的部分做了很多的努力去优化,但是,他为了给予使用者足够高的自由度,其实它是把塑形的部分,主要是塑形的部分开放出来,这也给了我们使用者一些“犯错”的机会。 如果要考虑性能的话,一方面其实还是需要多参考一些,另外就是还有一些修复、优化细节需要注意。一般体积云来优化它会在BaseShape输出,如果是0的话,它会跳过后面DetailNoise等的采样。 对于虚幻引擎4来说这个ConservativeDensity是一个提前退出的条件,所以我们要保证,比如我们看到一个效果,这个地方是没有云,我们就要让他在BaseShape这个地方去输出云;二个是要注意采样数,尽量在提前去烘培一些不同类型、不同形状的Noise去下一些功夫,这样子在运行时少一些采样,一次采样出来的结果尽量去做出更多花样,避免做出多次采样;第三就是谨慎开启它的其他特性,他们都会成倍的增加去采样的次数。 另外一个就是刚刚提到那张HeightCurveAtlas,它默认是不能是128*1,它只有一个正方形,但它其实大部分像素都是没有用的,所以可以修改一下让它稍微小一点。 然后是高层云的实现,高层云的实现比较简单,其实就是采用了一个2D的Cloud纹理去叠加在天空盒上,因为我们天气有两个——日光和月光,所以我们这里叠加了两个Lumen。 然后整个天气系统实现其实有很多小的Trace,然后比如高层云实际的位置,星星和月亮其实是在体积云和高层云之间,因为高层云直接在天空盒上,但其实视觉上我们希望这些云都能遮挡住星星和月亮,所以我们用的方法是它们都会使用同一个MaskValue去做它们的剔除,只不过对于星星和月亮来说是被Mask区分,这样就能形成视觉上高层云遮挡住星星和月亮的效果。 […]