Xenolies

Welcome to Xenolies Blog !

Golang 常用设计模式

教程:Easy 搞定 Golang 设计模式 (yuque.com) 面向对象设计原则 原则的目的: 高内聚,低耦合 单一职责原则 类的职责单一,对外只提供一种功能,而引起类变化的原因都应该只有一个。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 package main import "fmt" type ClothesShop struct {} func (cs *ClothesShop) OnShop() { fmt.Println("休闲的装扮") } type ClothesWork struct {} func (cw *ClothesWork) OnWork() { fmt.Println("工作的装扮") } func main() { //工作的时候 cw := new(ClothesWork) cw.OnWork() //shopping的时候 cs := new(ClothesShop) cs.

Golang Zinx 框架入门

简介 Zinx 是一个基于 Golang 的轻量级并发服务器框架 Golang 轻量级并发服务器框架 zinx 文档) 教程地址 :【zinx-Golang 轻量级 TCP 服务器框架(适合 Go 语言自学-深入浅出)】 我自己的学习笔记: Xenolies/ZinxStudy: Golan-Zinx 框架学习 (github.com) Zinx 架构 Zinx v0.1 基础 Server Zinx 框架有两个最基本的模块 Ziface 和 znet . ziface 主要是存放一些 Zinx 框架的全部模块的抽象层接口类。 Zinx 框架的最基本的服务类接口 iserver,定义在ziface模块中。 znet 模块是 Zinx 框架中网络相关功能的实现,所有网络相关模块定义在这里。 定义 iserver 接口 服务接口有三个最基础功能,启动服务器,运行服务,还有停止服务. 需要注意的是启动服务器可以写到运行服务中,来使用更方便 1 2 3 4 5 6 7 8 9 10 11 12 13 14 package ziface // IServer Server 定义一个服务器接口 type IServer interface { // Start 启动服务器 Start() // Stop 停止服务器 Stop() // Serve 运行服务 Serve() } 实例化 iserver 接口 定义了接口需要实例化接口,所以在 znet 下建立一个 server.

C# 基础

简介 C#(读作“See Sharp”)是一种新式编程语言,不仅面向对象,还类型安全。 开发人员利用 C# 能够生成在 .NET 中运行的多种安全可靠的应用程序。 C# 源于 C 语言系列,C、C++、Java 和 JavaScript 程序员很快就可以上手使用。 下面列出了 C# 成为一种广泛应用的专业语言的原因: 现代的、通用的编程语言。 面向对象。 面向组件。 容易学习。 结构化语言。 它产生高效率的程序。 它可以在多种计算机平台上编译。 .Net 框架的一部分。 环境搭建 .NET 环境 安装 .NET Core SDK 下载 .NET(Linux、macOS 和 Windows) 下载安装完成后, 进入任务管理器,win + R 打开运行窗体 输入 cmd 输入指令 : dotnet --info 输出如下环境信息则表示搭建成功. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 .

GDC2005任天堂岩田聪演讲全文:玩者之心

在我的名片上写着,我是一个公司的总裁。 在我自己来看,我是一个游戏开发者。 在内心深处,我实际上是一个玩家。 今天,我要在这里介绍我们的工作和产业。 我记得,我玩的第一个游戏是《Pong》。我非常喜欢这款游戏。那时候,上高中的我是班上第一个买得起Hewlitt Packard小型计算器的学生。我想这是我产生对游戏兴趣的原因之一。当班上绝大多数同学使用计算器解答数学题的时候,我却用这个小东西编制游戏。我的第一个作品是一款网球游戏。我不期待现在会有什么人说“这款游戏图形效果实在太糟糕”,因为它本身就没有图形效果,而游戏也仅仅是一些数字所组成的。但是,我的朋友们喜欢这款游戏。这使得我非常骄傲。这激发了我(对游戏)的活力和热情。这种对游戏的热情最后确定了我的人生之路。 1978年,我进入东京工业大学(Tokyo Institute of Technology)学习。在那里,我非常想学习一些视频游戏编程方面的知识,但是那时候没有老师教授这方面的课程。所以,我选修了一些工程以及早期电脑方面的知识。下课之后,我没有和其他同学一起回宿舍继续学习,而是骑上我的小摩托车来到东京的一家电子商店。这家商店是当时东京唯一的一家专门销售个人电脑的店铺。这里是我非常喜欢逛的地方。但是,我不是这家店唯一的“常客”。一些电脑爱好者也经常光顾这家店。并且,我清楚他们在和我考虑一模一样的事——“我如何使用这些个人电脑来玩游戏?” 一来二去,我和这些电脑爱好者成为了朋友。不久之后,我们组织了一个俱乐部,并且在东京的秋叶原(Akihabara)租了一个单独的公寓以开发自己的游戏。后来,我们的这个开发小组,就成为了今天的HAL公司。公司的名字——“HAL”,取自电影《2001太空漫游(2001: Space Odyssey)》中出现的电脑。当时,在我们来看,这个名字绝对非常响亮而且帅气。这就是我当时的样子。 [岩田聪先生展示了自己年轻时的一张照片。在照片中,年青的他坐在一辆小摩托车上。] 和所有的游戏制作人一样,那时的我也是非常“酷”的。 现在想起来,我都不知道那时我是如何完成了大学学业并且毕业的。等到就业问题出现的时候,我因为已经加入了一个有史以来“最小”的公司而“声名显赫”。目前,我是留下的5名HAL创始员工之一。但是,当时我父母对于我“加入游戏公司”这件事持反对态度。你可以想象,当我把这个决定告诉父亲的时候,他有多么的生气。那段时光,是我家历史上最不愉快的一个时期。 当有人问我“当你进入HAL时,你负责什么工作”的时候,我会告诉他我是作为一名程序员进入公司的。并且,我同时还兼任开发工程师、游戏设计师以及销售人员。此外,我还负责为大伙订饭以及公司的清扫。虽然工作非常多,但是在我来看,这些都充满了乐趣。 当听到任天堂在开发一款叫做“Famicom”或者“NES”的新设备、并且这种机器将提供令人难以置信游戏图像的时候,我们意识到HAL历史上最重要的时刻就要到了。我们清楚的知道,这款机器是为我们开发的。于是,我们想尽办法和任天堂公司联系,把我们的创意提供给他们。我们期待其中一个能够获得任天堂的喜爱而成为产品。 最后,任天堂公司接受了我们。我们成为了Nintendo的员工。在这里,我们的第一个工作并不是把自己的创意付诸实施,而是为任天堂制作一款超期开发的游戏。最后,我们完成了这个工作。而这款游戏就是后来出现在任天堂“红白机(NES/Famicom)”上的《Pinball》。这次开发体验让我们了解到即便是游戏的美工也需要了解游戏开发中商业部分的情况。毕竟如果一款游戏不能实现商业运作,打算通过其挣钱的概率就非常之小。 从另一个角度来说,那时的工作对我们也是有好处的。因为现在来看,那时的图象是非常粗糙的。因此,我们时常思索如何让玩家的想象超出屏幕的限制。比如我们常常这样想:如果有一天,游戏的图象效果不能进一步提升,我们应该做些什么? 因为我们的工作获得了任天堂的赏识,此后HAL便和Nintendo建立了非常紧密地关系。在HAL开发的一些早期游戏过程中,我们学到了很多新的东西。第一个“卡比(Kirby)”游戏的开发,使我们懂得了团队协作的重要性。既然不是每个人都能成为宫本茂(Shigeru Miyamoto),团队协作就能开发出一个人能力所及之外的游戏。当时,我们和日本著名制作人系井重里(Shigesato Itoi)一起工作。实际上,他是一个非常痴迷游戏的玩家。此后,他把自己的梦想变成了现实,这就是《Mother(母亲)》系列游戏(北美市场的名称为《Earthbound》)。这件事告诉我们,在合适的情况下不断的追求也能成为[游戏开发的]“原动力”。 在HAL工作了一些年之后,我进入了Nintendo公司。3年前的一天,山内溥(Hiroshi Yamauchi)老先生指定我担任任天堂的新董事长。这确实是一个所有人期盼的荣誉。但在我而言,这也同时是一个非常大的挑战。我明白这需要我为公司付出更多的时间和精力,同时还要担负更多的责任。 但是,作为游戏开发者的我,对这一切都了如指掌。 所以,作为已经一名在视频游戏领域工作超过20年的人,我今天早上非常愿意来到这里回答里两个大家经常提到的问题。 第一个问题是“作为一个拥有20多年工作阅历的开发者,这些年来什么发生了变化?” 第二个问题是“[这些年来]什么没有发生变化?” 我想告诉大家,第一种“没有也将不会发生变化的”就是我们娱乐的天性。与其他媒体一样,我们游戏业为了获得成功同样需要创造一种“情感响应”。笑声、恐惧、愉悦、感动、惊讶等等等等。最后,[我们的产品]能否引起玩家的“共鸣”将作为判断产品成功与否的标准。与此同时,这也是“度量”成功的最低线。 第二种不变的,就是我们需要对游戏中设定的挑战以及回报[对玩家产生的影响]进行权衡。不同的玩家能够接受的程度各异。一个“重度”玩家可以接受更多的挑战,但是一个普通玩家能够承受的则相对较少。我们认为开发出适合所有玩家的游戏是任天堂的责任。当然,我在这里所提到的“所有玩家”也包括现在还不曾玩过我们游戏的朋友。 第三种不会改变的就是创意的“重要性”。当然,这也包括为已有的游戏提供一个新的开发思路。但是,最难能可贵的就是能够提出一个全新的游戏创意。我确信,在今天的台下的听众中就有这样的天才。我们游戏产业需要的就是这种天才!! 第四种,也是永远不会改变的,就是“依靠软件贩卖硬件”的销售模式。人们买游戏是为了玩到他们喜欢的游戏。在这一点上,我同意苹果(Apple)公司总裁史蒂夫•乔布斯(Steve Jobs)关于“软件就是使用者的体验”、“软件不单单将推动电脑技术的发展,它将推动整个消费电子产业的发展”的看法。 最后,不会改变的就是知识产权的价值。如果“依靠软件贩卖硬件”的销售模式是正确的话,那么“知识产权贩售软件”的正确性将更加彰然。当开发商用“超人”、“詹姆斯•邦德”以及“NFL Football”这些品牌创造商业奇迹的时候,我们应该为能够使用自己创造的这些品牌来制作最好的游戏而骄傲。 再来说说,我是如何看待“什么发生了变化”的。 [在我思考这个问题时]一个字眼立刻“跳到”我的脑海之中,那就是“更大”。 在西半球,游戏产业变得“更大”。在北美,仅游戏零售店的价值就已经接近170亿美元。去年,美国游戏销售再次获得了8%增长率。现在游戏无处不在。它在你的起居室里、你的办公室里、你的PDA里、你的手机里,当然还有你的NDS里。许多媒体的报道都显示,现在的年轻人用在玩游戏上的时间远远超过了看电视。 与此同时,游戏本身也在不同的方向上变得“更大”。依次是,更大的开发团队、更大的开发预算以及面临发售期限时更大的挑战。此外,“更大”也意味着原先大型的开发公司,通过毁灭相对较小的同行,而变得“更大”。我们都非常清楚,下一代游戏的开发预算将至少是现在的3倍以上。随便一款游戏的开发成本将达到8位数。如此巨额的预算也只有那些“更大”的开发商才能承受得了。 开发商在重点游戏上“更大”的投入将会为他们带来更多的利润。这在所有人来看都是非常正常的。但是,不知道大家注意到没有,开发商提供给每个消费者的书、电影以及电视节目都是千篇一律的。为此,我们[任天堂]将做出自己“不落窠臼”的风格。在游戏中,我们将帮助玩家完成自己的梦想、创造自己的精彩结局。 另一方面,更明显的是产业的“缩小”趋势。 现在,我们所能遇到的风险越来越小。我们越来越容易对“什么是视频游戏”作出定义。游戏的类型也非常清楚:射击类、体育类、益智类等等。不过,谁还记得我们上一次创造出新的游戏类型是什么时候?而且,更重要的是我们用来诠释游戏的方式也越来越少。“赛道”、“音轨”、“老怪(Bosses)”还有英雄。不同的游戏制作的越来越相似。“泰戈•伍兹(Tiger Woods)”和“马里奥高尔夫(Mario Golf)”,都是非常成功的游戏大作。但是两款同样以“高尔夫”为主题的游戏,却属于截然不同的两种游戏类型。这种多样性在现今越来越少见了。 现在,我们也越来越容易定义游戏的开发取向。增加游戏的“真实性”,并不是提高游戏性的唯一办法。在这一点上,我曾经做出冒被大家误解的风险的举动。还记得么,我曾经开发过一款没有网球选手的网球游戏。如果有人非常欣赏图形效果,最应该的就是我了。但是,我的意思是图形效果能够对游戏有所改善。我们需要找到其他的方法。游戏性的“改进”应该有更多的定义。 最后,我非常关心玩家的想法。 当我们花费更多的时间和金钱来满足玩家的时候,我们是否遗漏了其他一些玩家? 我们开发的游戏是否适合每一个人? 是否你有朋友和家人不玩游戏?那他们喜欢做什么? 我会提问[在座的所有人]:是否你曾经为了一款自己都不愿意玩的游戏而挑战自我、辛苦开发呢? 我想这些问题对于在所得所有人来说都是一个非常重要的挑战。 所以,我已经多次对游戏产业当前的状况发表看法。你可能对于我们将如何解决上述问题感到好奇。在这里,我将坦诚地做出回答。 首先,[第一个问题是]是否任天堂背离了“重度”玩家?我不这样认为。 如果我们不在乎“重度”玩家的话,我们就不会为NDS准备《银河战士:猎手(Metroid Prime Hunters)》。虽然,这款游戏并不能称得上是一款“经典大作”,但是它表明我们的NDS用户定位中并不缺失“重度”玩家。而且,如果我们不在乎这个玩家群落的话,我们也不会和n-Space合作推出专门针对NGC主机的《Geist(感性)》。这些都将改变您的看法。 [再举个例子,]如果我们不重视“重度”玩家,NGC就不会成为2005北美首款成功大作——Capcom的《生化危机4(Resident Evil 4)》的首发游戏平台。这不但证明我们非常关心“重度”玩家,而且表明这个层面的玩家也同样关心任天堂。 而且,我们将按部就班地推出今年任天堂游戏平台最受期待的游戏——一款全新的“塞尔达传说”。我非常高兴能和在座各位谈论这款游戏,但是视频更具说服力。任天堂公司选择您在E3大展之前欣赏这款最新“塞尔达传说”的动画。 大家在这里了解到的仅仅是这款全新“塞尔达传说”的一小部分。我们将在今年的E3大展上公布更多细节。最新“塞尔达传说”将面向核心玩家。同时,这款作品也会和前作一样适合所有玩家。这也是我们[任天堂]开发所有游戏的标准。 我们的游戏开发标准可以形象地用4个“I”表示: 第一个“I”——真正的创新(Innovative)。[在我们的游戏中具有]此前所没有的东西。 第二个“I”——直觉(Intuitive)。[在游戏开发的时候]如何自然地控制角色,如何定位游戏性,都来自于直觉。 第三个“I”——游戏的魅力(Inviting)。什么将会使你肯为游戏花费时间呢?那就是游戏的魅力。 最后一个“I”——界面(Interface)。什么样的界面才能吸引玩家呢?玩家能否以一种全新的形式开始游戏呢? 实际上,在游戏业界几乎没有几款游戏能够同时在这四方面做好。但是,这确实是我们要求自己的标准。 在实际工作中,我们切实地把这个标准用于我们的软硬件开发。最近的一个例子就是我们发售的NDS主机。这款主机就兼顾了“创新”、“新颖的界面”、“直觉”和“魅力”。到目前为止,玩家们都认可了这一点。现在,我们已经在日本以及北美地区售出了400万台NDS。其中,北美地区从发售到现在仅仅经过了16周。而这些数字还不包括将在明天(本文发表于3月10日)启动的欧洲市场。

Linux 基础

什么是 Linux Linux,全称 GNU/Linux,是一种免费使用和自由传播的类 UNIX 操作系统,其内核由林纳斯·本纳第克特·托瓦兹于 1991 年 10 月 5 日首次发布,它主要受到 Minix 和 Unix 思想的启发,是一个基于 POSIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux 有上百种不同的发行版,如基于社区开发的 debian、archlinux,和基于商业开发的 Red Hat Enterprise Linux、SUSE、Oracle Linux 等。 安装 Linux 这里使用的环境是 Windows 自带的 Linux 子系统 (WSL2), Ubuntu 版本 1804. 可以参考微软官方的安装教程 安装 WSL | Microsoft Learn 注意的是,如果直接从微软商店(Microsoft Store)安装会默认安装的 C 盘,导致使用不便. 建议下载发行版的离线安装包,然后将后缀改为 zip,解压到你想要的位置上面,接着运行可执行文件(exe),安装 Linux. Linux 目录结构 Linux 的目录结构是一个树型结构. Windows 系统可以拥有多个盘符,如 C 盘、D 盘、E 盘.

Go-Zero 框架入门

环境配置 Goctl 环境配置 Goctl 介绍 goctl 是 go-zero 微服务框架下的代码生成工具。使用 goctl 可显著提升开发效率,让开发人员将时间重点放在业务开发上。 其功能有: api服务生成 rpc服务生成 model代码生成 模板管理 Goctl安装 方法1 Go get安装 1 2 3 4 5 # Go 1.15 及之前版本 GO111MODULE=on GOPROXY=https://goproxy.cn/,direct go get -u github.com/zeromicro/go-zero/tools/goctl@latest # Go 1.16 及以后版本 GOPROXY=https://goproxy.cn/,direct go install github.com/zeromicro/go-zero/tools/goctl@latest (windows可以下载64位或者32位的发行版,然后放到$GOPATH/bin 目录下,然后将其添加到环境变量中) 方法2 从 go-zero代码仓库 git@github.com:zeromicro/go-zero.git 拉取一份源码,进入 tools/goctl/目录下编译一下 goctl 文件,然后将其添加到环境变量中。 安装完成后 goctl -v ,如果输出版本信息则代表安装成功,例如: 1 2 $ goctl -v goctl version 1.4.3 windows/amd64 如果显示没找到,请确认是否配置了环境变量 环境测试 值得注意的是在 1.4.3 版本的 Goctl直接使用go run greet.
0%