作为一个程序员,你有没有想象过多人游戏是如何实现的? 在外行人看来游戏很神奇:两个或者更多的玩家在网络上分享共同的经历,就像他们真实的存在于相同的虚拟的世界一样。游戏看起来犹如一个巨大的魔术,奇妙而又刺激,但作为一个开发人员我们知道,真实的情况和我们所看到的并不一样,那只是一种错觉。你感受到的共享现实,实际上是在那个时刻内,由你自己的独特视角和位置所感知的近似情况。 一、Peer-to-Peer帧同步 最初的游戏是通过peer-to-peer来联网的,每个计算机通过网状拓扑的结构的彼此连接并交换信息。你仍然可以看到这种模型存在于RTS游戏中,而且基于某些原因它还很有趣,也许是因为它是大...

  vVTRx3z6zETO   2023年11月02日   33   0   0

尽管容器(containers)和Kubernetes是很酷的技术,但为什么我们要在此平台上运行游戏服务器? 游戏服务器的扩展很困难,并且通常是专有软件的工作软件容器和Kubernetes应该使它更容易,并且编码更少。 容器为我们提供了一个可部署的工件,可用于运行游戏服务器。这消除了在部署过程中安装依赖项或配置机器的需要,并且极大地提高了人们对软件在开发和测试中能够像在生产环境中一样运行的信心。 通过将软件容器和Kubernetes结合使用,我们可以建立一个坚实的基础,从而基本上可以大规模运行任何类型的软件从部署(deployment),运行状况检查(healthchecking),日志...

  vVTRx3z6zETO   2023年11月02日   32   0   0

在本系列的第1部分中,我们讨论了如何使用专用游戏服务器,将其与Docker打包,然后在Kubernetes上托管和管理它,这是一个很好的开始。然而,由于我们的Kubernetes集群通常是固定大小的,我们可能会耗尽所有可用容量来运行我们需要的所有游戏服务器容器,以匹配所有想玩我们的游戏的玩家——这将是一件非常糟糕的事情。 Kubernetes集群有很多伸缩选项,我们将在以后的文章中深入介绍一个定制的Kubernetes节点伸缩器。首先,我们必须解决一个非常重要的事情:我的游戏服务器实际上占用了多少CPU和内存? 没有这些知识,就无法将游戏服务器的CPU和/或内存利用率与Kubernetes...

  vVTRx3z6zETO   2023年11月02日   19   0   0

在前两篇文章中,我们研究了如何在Kubernetes上托管专用游戏服务器,并测量和限制其内存和CPU资源。在本期中,我们将探讨如何利用上一篇文章中的CPU信息来确定何时需要扩展Kubernetes集群,因为随着玩家人数的增加,我们已经没有足够的空间来容纳更多的游戏服务器。 分离Apps和GameServers 在开始编写代码以增加Kubernetes集群的大小之前,我们应该做的第一步是将我们的应用程序(例如,matchmakers,gameservercontrollers和即将编写的nodescaler)分离到不同的应用程序中一在集群的不同节点上,而不是游戏服务器运行的地方。 这有几个好...

  vVTRx3z6zETO   2023年11月02日   29   0   0

在前三篇文章中,我们将游戏服务器托管在Kubernetes上,测量并限制它们的资源使用,并根据使用情况扩大集群中的节点。现在我们需要解决更困难的问题:当资源不再被使用时,缩小集群中的节点,同时确保正在进行的游戏在节点被删除时不会中断。 从表面上看,按比例缩小集群中的节点似乎特别复杂。每个游戏服务器具有当前游戏的内存状态,并且多个游戏客户端连接到玩游戏的单个游戏服务器。删除任意节点可能会断开活动玩家的连接,这会使他们生气!因此,只有在节点没有专用游戏服务器的情况下,我们才能从集群中删除节点。 这意味着,如果您运行在谷歌KubernetesEngine(GKE)或类似的平台上,就不能使用托管的...

  vVTRx3z6zETO   2023年11月02日   26   0   0

简介 Superstellar是一款开源的多人Web太空游戏,非常适合入门Golang游戏服务器开发。 规则很简单:摧毁移动的物体,不要被其他玩家和小行星杀死。你拥有两种资源—生命值(healthpoints)和能量值(energypoints)。每次撞击和与小行星的接触都会让你失去生命值。在射击和使用提升驱动时会消耗能量值。你杀死的对象越多,你的生命值条就会越长。 技术栈 游戏分为两个部分:一个中央服务器(centralserver)和一个在每个客户端的浏览器中运行的前端应用程序(afrontendapp)。 我们之所以选择这个项目,主要是因为后端部分。我们希望它是一个可以同时发生许多...

  vVTRx3z6zETO   2023年11月02日   21   0   0

SEO中的时效性指什么? 众所周知,百度搜索结果展示的影响因素主要有三个:相关度、权威度、时效性。其中的“相关度”指的是网站内容与搜索关键词具有很强的关联性,并且是能够帮助用户解决搜索需求的内容。而“权威度”指的是搜索引擎自己的一套算法,影响因素很多,比如:网站品牌词搜索量、热门长尾词个数和流量、网站访问流量状况、URL体现的权威度(比如政府网站)、网站转载及口碑等等。这两个因素在这里就不一一深入介绍,大家可以自行寻找资料了解。下面我们主要详细了解下“时效性”这一重要的因素。保证网站内容具有时效性,也就是怎样的内容才具有时效性,并且是搜索引擎认可的。带着这个问题,我们查阅了搜索引擎官网文档...

  vVTRx3z6zETO   2023年11月02日   33   0   0

前言 1991年,我第一次在DOS操作系统下玩“F-117AStealthFighter2.0”游戏,这是一款像素级的模拟器游戏。 于是,我这辈子被种草游戏了--从此爱上了游戏,并且想写一款游戏。于是,我考大学时就报考了计算机系专业,因为别人告诉我大学里会学怎么编程啊、肯定也会编写游戏啊等等... 不过,呵呵,相信大家也知道这是一个谎言!我上了大学后发现别人告诉我的东西根本没有不存在,差一点被害得在毕业时都入不了IT行业,还谈什么游戏开发了。结果搞了10年的EPR应用开发--因为得先填饱自己肚子实现了生存再说哦。 不过,写游戏的梦想一直存在我的心中,直到2011年我转行做了手机游戏的...

  vVTRx3z6zETO   2023年11月02日   43   0   0

三种Java游戏类型 使用Java我们可以创建三种类型的游戏:applet游戏,窗体游戏和全屏幕游戏。 applet游戏—是运行在浏览器中的应用。它的好处理用户不需要安装应用。但是用户必须安装JRE并且必须在web浏览器中运行。另外,applet小程序还有安全限制,以保证它不恶意破坏本地代码。比如applet程序不能把游戏保存到用户机的硬盘中去。它只能通过网络连接一个服务器 窗体游戏—该类型的游戏没有applet流程的安全限制,它与普通的应用一样,有标量栏、关闭按钮等。但是它不吸收用户,特别是当我们沉浸在游戏中时。 全屏幕游戏—没有桌面元素,比如标题栏、任务栏和菜单栏,这样玩家可完全沉浸...

  vVTRx3z6zETO   2023年11月02日   31   0   0

前言:优化网站URL是提高SEO的重要一步。 对搜索引擎友好的URL可以提高网站的搜索可见度,特别是对于低流量的长尾关键词。 在这篇文章中,我将针对WordPress网站的URL总结几种常用的SEO优化方法。根域名 默认情况下,网站根域名有以下几种形式。 cungun.com cungun.com www.cungun.com www.cungun.com 如果我们在网站中混合使用这几种形式的URL,搜索引擎会认为这是网站的镜像版本。 一般来说,我们选择其中一个"https"版本,让其他三个版本在全局范围内301重定向到我们的"https"版本域名上。 从安全角度来看,使用"https...

  vVTRx3z6zETO   2023年11月02日   26   0   0

前言 代码演示环境: 软件环境:Windows10 开发工具:VisualStudioCode JDK版本:OpenJDK15 虽然这些代码是10几年前的写的,但是仍然能够在现代操作系统和Java最新开源版本中正常运行。界面和交互 AWT事件模型 如果一个人玩橡棋就像一个人玩游戏时没有交互一样,会非常无聊,所以玩家最大的乐趣就是与电脑或者人的交互。那么首先玩家得与电脑交互—键盘与鼠标的交互,在JDK1.4版本还提供了手柄的驱动让玩家与电脑交互。 AWT有自己的事件分发线程—该线程分发所有种类的事件,比如鼠标点击和键盘事件,这些事件都来自于操作系统。 那么AWT在哪里分发这些事件?在一个...

  vVTRx3z6zETO   2023年11月02日   24   0   0

前言 代码演示环境: 软件环境:Windows10 开发工具:VisualStudioCode JDK版本:OpenJDK15 声效和音乐 声效基础知识 当我们玩游戏时,我们可能会听到声效,但是不会真正注意它们。因为希望听到他们,所以声效在游戏中是非常重要的。另外,在游戏中的音乐会动态被修改来配合游戏的剧情的发展。那么什么是声效(声音)呢?声效是通过媒体振动产生的效果。该媒体是空气和计算机中的扬声器产生的振动—从而发出了声音—传送到我们耳朵里;然后我们的耳膜会捕获这些信号,接着传送给我们的大脑,从而人类听到了声音。 共振(vibration)是通过空气的压缩振动(fluctuations...

  vVTRx3z6zETO   2023年11月02日   23   0   0

前言 代码演示环境: 软件环境:Windows10 开发工具:VisualStudioCode JDK版本:OpenJDK15 Java2D单人游戏 创建基于Title的地图 在2D游戏中,地图是整体结构,或者我们叫做游戏地图(gamemap),通常是几个屏幕的宽度表示。有些游戏地图是屏幕的20倍;甚至是100位以上,主要特点是跨屏幕之后,让地图滚动显示,这种类型的游戏又叫做2D平台游戏(2Dplatformgame)。所以平台游戏是指玩家从一个平台跑到另外一平台,在其中需要跑、跳等动作,除此之外,还要避开敌人,以及采血、加体力等动作。本章我们介绍怎样创建基本的地图、地图文件、碰撞侦测、...

  vVTRx3z6zETO   2023年11月02日   41   0   0

前言 代码演示环境: 软件环境:Windows10 开发工具:VisualStudioCode JDK版本:OpenJDK15 Java2D单人游戏 创建基于Title的地图 在2D游戏中,地图是整体结构,或者我们叫做游戏地图(gamemap),通常是几个屏幕的宽度表示。有些游戏地图是屏幕的20倍;甚至是100位以上,主要特点是跨屏幕之后,让地图滚动显示,这种类型的游戏又叫做2D平台游戏(2Dplatformgame)。所以平台游戏是指玩家从一个平台跑到另外一平台,在其中需要跑、跳等动作,除此之外,还要避开敌人,以及采血、加体力等动作。本章我们介绍怎样创建基本的地图、地图文件、碰撞侦测、...

  vVTRx3z6zETO   2023年11月02日   21   0   0

前言 我们做Web开发时肯定不需要用到算法,并且我们在使用Java进行Web服务开发时,一般也用不到什么算法,包括什么各种分布式的微服应用开发。 但是,只要我们进行游戏开发,一般都会用到算法的。什么是算法? 算法是一种解决问题的有效方法(effectivemethod),该方法使用有限的指令序列来解决问题。(Analgorithmisaneffectivemethodforsolvingaproblemusingafinitesequenceofinstructions)。 每个算法是一个完成复杂任务的列表,该列表是被定义好的(固定的)。算法从一个初始状态开始,然后指令描述了一个到成功状态...

  vVTRx3z6zETO   2023年11月02日   26   0   0

背景 游戏上架谷歌申请推荐时,谷歌会给予一些优化建议。这些建议实际上都是比较不错的游戏体验优化方向。以下根据app上架谷歌应用商店的标准,列举需要适配的地方并提供了修改样例。 1.谷歌应用图标 游戏icon:5个不同尺寸的icon,4848,7272,9696,144144,192192分别放在mdpi,hdpi,xhdpi,xxhdpi,xxxhdpi下面。 推送icon(只能由白色+透明组成):(白底透明字)5个不同尺寸的icon,2424,3636,4848,7272,9696分别放在mdpi,hdpi,xhdpi,xxhdpi,xxxhdpi下面。 示例: 2.状态栏消息推送 在...

  vVTRx3z6zETO   2023年11月02日   39   0   0

背景 谷歌在Android8.0后就推出了圆形图标,并在AndroidStudio中提供了制作工具。那么如果不制作圆形工具会怎么样?在部分设备上图标会出现适配问题,UI上不美观。本文将介绍ImageAssetStudio工具的使用,介绍如何制作圆形图标 1、关于ImageAssetStudio AndroidStudio包含一个名为ImageAssetStudio的工具,可帮助您根据素材图标、自定义图片和文本字符串生成自己的应用图标。它会针对您的应用支持的每种像素密度以适当的分辨率生成一组图标。ImageAssetStudio会将新生成的图标放置在项目中res/目录下的特定于密度的文件...

  vVTRx3z6zETO   2023年11月02日   31   0   0

一、背景 在Unity游戏工程中,经常遇到这样的问题:打开登录弹框时,点击Home键先处理其他事宜再返回,发现屏幕黑屏;或者打开了其他接受输入焦点的对话框或弹出窗口,点击返回键时发生屏幕黑屏,需要触摸屏幕(获得焦点)才能正常显示。 二、分析及解决 1、生命周期分析 (1)黑屏情况(UnityDemo): 其中,生命周期顺序如下: 打开页面:onCreate--onStart--onResume--onWindowFocusChanged:true 点击登录:--onWindowFocusChanged:false 点击Home返回:--onPause 重新进入:--onRestart--...

  vVTRx3z6zETO   2023年11月02日   47   0   0

上学期刚开学的时候我特别沉迷于斗地主充了6块钱赢了30万豆然后一夜之间破产越想越气 然后我就有一个大胆的想法开发一个斗地主现在这个斗地主能在控制台上运行 本文主要讲解我在开发斗地主时研究的算法思路 现在算是一个半成品吧差个图形界面和一个socket就能联机对战了 后来我又沉迷上了王者荣耀到这学期才想起我还有个斗地主的源码所以今天想在这里和大家分享一下 一、先定义个常量的类 package com.liziguo.ddz; /   @Author: Liziguo   @Date: 2020/9/13 11...

  vVTRx3z6zETO   2023年11月02日   30   0   0

java.awt包的Window类 一个窗体对象是一个(top-level)窗体,该窗体没有边框和菜单条;该窗体的默认的布局方式是BorderLayout方式。一个窗体对象必须拥有一个frame,或者Dialog或者另外一个窗体对象。窗体对象概念如下图所示: 在多屏幕环境中,我们可这样的构造方法Window(Window,GraphicsConfiguration)在不同的屏幕设备(screendevice)中创建一个窗体对象。GraphicsConfiguration对象表示的上目标屏幕设备。在一个虚拟设备的多屏幕环境中,桌面区域可以跨多个物理屏幕设备,所有设备的边界是相对于虚拟设备坐...

  vVTRx3z6zETO   2023年11月02日   22   0   0
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~