JME商业游戏进阶二 (地表层的神秘面纱1)

抖音用户评论和ID的采集方法 随着5G时代的普及,各大运营商的套餐纷纷推出,使得流量成本进一步降低。同时5G线路高宽带、低延迟的技术特性和手机普及,让视频用户访问量快速增加。 由于大量的视频工具和拍摄APP的提供,让短视频的拍摄、制作包括发行都变得更加简单便捷,越来越多的普通人可以投入视频创作,创造了更丰富的互联网内容,视频作者从视频推广中能获取粉丝和推广收益。 目前抖音就是目前最重要的短视频平台之一,要及时获取上面的用户评论和ID,需要结合爬虫代理实现采集方案,下面的代码就能快速采集相关信息: package htmlunit; i 阅读详情


          进阶一里面大体讲解了图片的绘制,当然,还是侧重于地图的绘制的,至于建筑层、角色层等绘制以后会一一详解的,众所周知,要编写一个游戏,为角色建筑创建一个“世界”是很有必要的,面RPG、ACT的地图比起其它就更为复杂(当然难度也就很大了,有可能会用到卡马克卷轴算法,嗯,的确很经典了)。地图这块主要分三个小节,这一节就介绍绘制的两种方法(上文所说的基本绘制与缓冲绘制法),第二节将说明卡马克算法的具体实例,第三节则将讲解地图编辑器、地图数据保存方法及程序中的调用。那就开始这节的内容吧。

        1、基本绘制法:

         说是基本,其实是指它的原理简单,但可不是那种直接画图片就叫绘制地图哦微笑,它的基本原理是,将地图所需的图块压缩在一张图片中,当然,这个步骤美工会帮你完成的,有了这张图后,然后用MapWin生成地图数组(MapWin很容易使用,当然,后期需求很大的话它是不能满足需求的,一般是公司有自己的地图编辑器及人物动作等编辑器,不过这里我们主要是讲怎么来绘制,所以你可以到网上下载一些图,然后用MapWin生成数组,然后就可以继续看下面的内容了。下面有图及源码的链接,想下载的就看看,免积分哈)。嗯,生成了地图数组以后,我们就在程序中处理,如下:

       (1)初始化所需的变量

         private Image imgMap; // 图片
	private int imgData[][]; // 地图数组
	private int m_cellWidth; // 图片每一小块宽16
	private int m_cellHeight; // 图片每一小块高16
	private int m_width; // 地图宽列数(多少格)20
	private int m_height;// 地图高行数20
	private int m_iImgWTitleNum;// 图片X方向格子数
	private static Map map;

       (2)载入图片及为变量初始化

       (3)核心绘制(配合setClip与drawImage方法,本质是每次都绘制整张Image,然后在相应的位置截取,有疑问的话,可以下载源码)

    

public void drawMap(Graphics g) { // 绘制
		for (int i = 0; i < m_height; i++) { // 循环行,对应m_height
			for (int j = 0; j < m_width; j++) { // 循环列
				int cx = imgData[i][j] % m_iImgWTitleNum * m_cellWidth; // 元素在图片中对应的X方向切块位置
				int cy = imgData[i][j] / m_iImgWTitleNum * m_cellHeight; // 元素在图片中对应的Y方向切块位置
				// if (i == 0 && j == 0) { //证明上述观点
				// System.out.println(cx + "               " + cy);
				// }
				int x = j * m_cellWidth; // 此时在地图中的X坐标
				int y = i * m_cellHeight; // 此时在地图中的Y坐标
				g.setClip(x, y, m_cellWidth, m_cellHeight); // 设置可见位置
				g.drawImage(imgMap, x - cx, y - cy, 0); // 偏移坐标绘制整张图片
			}
		}
	}


       2、缓冲绘制

       (1)(2)同上,因为我们要用到图片缓冲,新增了一个图片数组;再新增一个图片总块数变量

       (3) 缓冲绘制核心

        在方法中初始化图片块数组的长度,为每一小块建立缓冲,计算每一小块图片开始位置,然后绘制在imgArray中

	public void initMap() { // 初始化地图
		imgArray = new Image[m_totalNum];
		for (int i = 0; i < m_totalNum; i++) {
			imgArray[i] = Image.createImage(m_cellWidth, m_cellHeight);
			Graphics grap = imgArray[i].getGraphics();
			int cx = i % m_iImgWTitleNum * m_cellWidth;
			int cy = i / m_iImgWTitleNum * m_cellHeight;
			System.out.println(cx + "                " + cy);
			grap.drawImage(imgMap, -cx, -cy, 0);
		}
	}


         (4)具体绘制,因为已经知道图片块对应的图像了,所以,我们只是在需要绘的地方直接绘制imgArray即可。

        

	public void drawMap(Graphics g) { // 绘制
		for (int i = 0; i < m_height; i++) { // 循环行,对应m_height
			for (int j = 0; j < m_width; j++) { // 循环列
				int x = j * m_cellWidth; // 此时在地图中的X坐标
				int y = i * m_cellHeight; // 此时在地图中的Y坐标
				g.setClip(x, y, m_cellWidth, m_cellHeight); // 设置可见位置
				g.drawImage(imgArray[imgData[i][j]], x, y, 0); // 偏移坐标绘制整张图片
			}
		}
	}

       

         下图是两种绘制方法的效果图

         

       之后是两种绘制方法的内存消耗表

       基本绘制法:

      

       缓冲绘制法

      

 

       奇怪吧,应该说缓冲绘制会更好一些,怎么占用的反而多一些呢,嗯,地图还不够复杂,不够大。当地图太大的时候,我们的缓冲绘制就体现它的功能了,例如,卡马克卷轴算法,典型的缓冲绘制法。源代码可去http://download.youkuaiyun.com/detail/simdanfeg/3810974处下载

双重机器学习模型中解释变量是连续变量的代码,看到好多都是0/1变量,如何解决? 🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!    📌 特别说明: 文中部分技术问题来源于真实生产环境及网络公开案例,均经过精挑细选与系统化整理,并结合多位一线资深架构师和工程师多年实战经验沉淀,提 阅读详情

相关推荐

Innovus每日精要 | 用setScanReorderMode优化扫描链,效率翻倍!

在数字后端物理设计的世界里,扫描链优化就像修路一样,既要保证数据流的顺畅,又要尽量减少绕路和资源浪费。它的主要任务是优化扫描链的连接方式,确保数据能快速、安全地流动。无论是多电压域设计、分区设计,还是复杂的逻辑门,它都能帮你搞定。后,你会发现它不仅能帮你节省时间,还能让你的设计更优雅、更高效。下次遇到扫描链问题时,不妨试试这些技巧,说不定你的设计效率会翻倍!,它能帮你搞定扫描链优化的那些事儿,让你的设计更高效、更优雅。接下来,我们看看这个命令的几个关键选项,以及它们的实际用途。扫描链优化看似枯燥,但掌握。

weixin_50820814的博客 1442

JME商业游戏进阶三 (地表层的神秘面纱2)

此节通过通过代码简要介绍卡马克地图卷轴缓冲算法在J2me中的应用及地图滚动的形成(文中用到的片段代码均来源于yarin所写的卷轴算法)。        1.算法原理:通过更新缓冲区的数据来达到动态改变图片绘制。        2.工作流程:卡马克定义一个和原始地图(即通过我们的地图数据生成的地图)相等大(或略大的缓冲区)。           第一步,初始化缓冲区的时候,像我们上节代码一样,

Simdanfeg的专栏 1611

Qt5+OSG实战:如何用osgQOpenGLWidget在窗口中加载3D模型(附完整代码)

本文详细解析了如何在Qt5中使用osgQOpenGLWidget加载和渲染3D模型,涵盖环境配置、核心架构、性能优化及高级技巧。通过实战案例和完整代码,帮助开发者实现工业级3D模型渲染,提升Qt与OSG的整合效率。

weixin_42741930的博客 263

JAVA 3D 碰撞检测Demo

桌面版碰撞检测,工作的很好,FPS达到40-60之间,为什么手机上就不能工作的很好呢,难道我的G1真太烂了,哎   import java.awt.Color; import java.awt.Graphics; import java.awt.event.KeyEvent; import javax.swing.JFrame; import com.threed.jpct.Camer

Simdanfeg的专栏 5122

华为OD机试 - 矩形绘制 - 数组、坐标偏移(Python/JS/C/C++ 双机位C卷 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。实现一个简单的绘图模块,绘图模块仅支持矩形的绘制和擦除。 当新绘制的矩形与已有图形重叠时,对图形取并集; 当新擦除的矩形与已有图形重叠时,对图形取差集。 给定一系列绘制和擦除操作,计算最终图形的面积。第一行为操作数N,接下来的N行格式为:d x1

学Java,找哪吒 835

65页PPT全面学习大型汽车集团企业IT信息化(管理架构、应用架构、技术架构)

订单到交付(OTD):借助ERP、MES、LES、SRM、QMS、APS等系统,实现财务与业务一体化、高级排产、生产过程自动化及供应链协同。- 数据标准化:数据标准化是企业信息化建设基石,包括制定统一业务解释和标准、维护管理流程、发布应用等,涉及数据统一定义、分类、编码等内容。- 大数据应用:汽车行业大数据应用涵盖生产、销售、售后等环节,如设备预见性保养、销量预测、质量预警等,提升企业运营效率和决策能力。- 策略明晰:明确C2M管理矩阵,包括供应商、采购、物流、制造、销售、财务等环节的策略。

cdfunlove的博客 1049

使用ANT、Proguard混淆、发布与反编译Android应用

FirstStep:下载ANT 1、 下载后解压到D:\Program Files\apache-ant-1.9.1 2、 新建ANT_HOME环境变量(D:\Program Files\apache-ant-1.9.1) 3、 将ANT加入到path 路径(%ANT_HOME%\bin)     第二步:拷入proguard.cfg到android项目,与标准版多了-dontwarn

Simdanfeg的专栏 4329

ROS机器人未知环境自主探索功能包explore_lite最全源码详细解析(五)

本系列文章主要针对ROS机器人常使用的未知环境自主探索功能包explore_lite展开全源码的详细解析,并进行概括总结。 本系列文章共包含六篇文章,前五篇文章主要介绍explore_lite功能包中 explore.cpp、costmap_tools.h、frontier_search.cpp、costmap_client.cpp等源码实现文件中全部函数的详细介绍,第六篇文章进行概括总结,包含自主探索功能包explore_lite的简介,实现未知环境自主探索功能的原理及流程总结,效果演示,使用功能包exp

慕羽★的博客 1510

JAVA桌面版、J2ME版、ANDROID版贪吃蛇

呃,主要是想复习下J2ME,不然忘记了,就做了3个版本。 先说说本程序实现的结构: J2SE: Food类: 实现食物随机产生及判断是否会碰撞在墙壁上或蛇身上 GameWindow类:主要实现整个游戏的线程及双缓冲 Snake类:绘制蛇身判断是否会碰撞在墙壁,移动,变长,自己撞到自己 Wall类:实现墙壁 Score类:实现计分

Simdanfeg的专栏 2261

汽车IVI中控开发入门及进阶(47):CarPlay开发

车载信息娱乐(IVI)系统已经从仅仅播放音乐的设备发展成为现代车辆的核心部件。除了播放音乐,IVI系统还为驾驶员提供导航、通信、空调、电源配置、油耗性能、剩余行驶里程、节能建议和许多其他功能。​驾驶座逐渐变成了你家和工作场所之外的额外生活空间。2014年,苹果推出了Apple CarPlay,这是一款汽车界面,允许驾驶员使用iPhone应用程序和其他IVI功能,如苹果地图、Siri、苹果音乐、iMessage,并拨打电话。

码农17年的博客 1128

PX4实战(十):PX4导航模块(Navigator)详解

本文将对 PX4 固件 v1.14.3 版本中的 Navigator(导航)模块进行详尽的技术剖析。作为飞行控制栈中的高层决策核心,Navigator 模块承担着将抽象的任务指令转化为具象的底层控制设定点的关键职责。本文基于对 src/modules/navigator 目录下源代码的深究研究与架构反推,详细阐述了该模块的文件组织结构、基于状态机的控制逻辑、uORB 异步通讯机制、核心任务模式(Mission)与返航模式(RTL)的实现细节,以及地理围栏(Geofence)与任务可行性检查(Feasibil

PX4-SLAM-PNC 666

JME商业游戏进阶一 (从图片开始)

先开个小头,从学校到公司,的确感到环境变化很大,这种生活方式突然让自己感到学生时代挺美好的。          感慨完了,下面就将自己所感受到不同的地方以文章形式表述出来,师弟师妹们看了,说不定会有所体会呢,这样,不用真正上班,你就早已远远超越别人了,多好。        商业游戏进阶第一步 — 从图片开始        图片是一个游戏中的大块,它的好坏直接决定了这游戏的是否受欢迎,21世纪

Simdanfeg的专栏 1836

采用了fluent模拟了平壁面结霜过程。udf,很经典,可以试试。

利用该模型作为FLUENT中的源项,模拟了在局部冷却下冷表面上的霜形成,以预测霜的形态、温度分布和霜的重量,结果与实验结果吻合良好。结果显示,霜首先围绕冷却块形成,然后逐渐向其他方向扩展,冷却块上方的霜密度最大。随着时间的推移,平均霜厚度逐渐增加,生长速率减慢,而平均霜密度随增长速率变快而增加。相变传递微观过程与机理、蒸发及冷凝换热、强化传热、高效传热管、热泵、制冷、节水节能新技术、电子元器件冷却、余热回收及梯级利用等。udf,很经典,可以试试。工程热物理、空调、热能、低温制冷、化工、物理等。

qq_15963745的博客 920

win7下 symbian开发环境搭建

一:首先准备以下几个软件 1:ActivePerl,我使用的是ActivePerl-5.6.1.635-MSWin32-x86.msi 2:jdk,我使用的是jdk1.6.0_12 3:IDE  Carbide c++,  我的Carbide_cpp_v2_7_en.exe 4:sdk ,我的为S60_3rd_Edition_SDK_Feature_Pack_2_v1_1_en.zip

Simdanfeg的专栏 1631

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

如何用命令行和carbite c++生成sis文件

一:先介绍如何用命令行生成sis文件 (1)找到自己sdk的安装路径(如D:/Symbian/S60_3rd_FP2_SDK_v1.1)。 (2)进行为我们提供的例子目录(如:D:/Symbian/S60_3rd_FP2_SDK_v1.1/S60CppExamples/helloworldbasic),你将资源管理器中看到如下画面: 接下来,进入打开命令提示符,输入cmd,进入当前项目的

Simdanfeg的专栏 1503

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

初探Symbian

工欲善其事,必先利其器,要想入门Symbian,得先清楚IDE中项目的各个结构才行。   一    网上发现两篇文章: 如何在Carbide C++中获取CVS项目 Carbide.c++ IDE的常用快捷键和技巧 + Symbian OS的错误代码定义大全   二   symbian目录结构   data                这个目录存储编译之后UI程序的资源文件rss

Simdanfeg的专栏 1257

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

在carbite c++下项目编译出现的问题

配置好环境以后 ,一定急着打开IDE想试一把吧 可是会遇到这样的问题.那样的问题呢 ,不要忙,听我慢慢 道来     1.打开carbite c++ 后,新建symbian项目(这个都会吧),我的workspace路径是F:/Symbian/Carbide/workspace 给项目取名Test,点继续,中间出现 There are known build problems when th

Simdanfeg的专栏 1114

【Unity知识速递】第7期 Unity 6.6 深度解析:WebGPU 正式版与 WebAssembly64,Web 游戏的内存革命

如何启用 Wasm64?需要注意的是,Wasm64 需要浏览器支持 Memory64 提案,目前主流浏览器的最新版本都已支持。一句话总结: Unity 6.6 用 WebGPU 转正、Wasm64 16GB 内存和渐进式加载三连击,将 Web 游戏的体验天花板又往上推了一大截——Web 平台不再是"妥协版",正在成为真正的一等公民。Unity 6.6 新增了 WebAssembly64(Wasm64) 构建选项,这可能是本次更新中对 Web 游戏开发者影响最大的一项升级。

crystal_WJT的博客 390

启元 T1 Pro 触摸交互实战:基于事件订阅的启元机器人限时反应力小游戏

拿到启元 T1 Pro 后第一个技能做的是纯互动游戏:拍背拍胸六种触摸动作读出事件,机器人随机出题、玩家 3 秒内拍对部位,三轮计分、战绩跨局持久化。全文重心不在玩法而在三个真实的 ROS2 bug:周期定时器被当一次性用(犯三次)、sim 注册定时器不进 spin、mock 不干净导致冷却判定失真——以及最终"删掉状态机只留时间戳"的返工。附 --sim 验证、.rpk 打包、PrimeConsole 部署与 PrimeHub 上架全流程。

月亮永悬不落,剑指巅峰 1万+

我给 DeepSeek 大肥鱼做了一款马里奥式闯关游戏

当全网都在把大肥鱼做成直播虚拟主播的时候,我决定给她做一款横版闯关游戏。

2301_79028807的博客 876

【AI实战】Claude-Code-Game-Studios中文版使用教程:把Claude Code改造成49个Agent的游戏工作室

原项目 31393 stars 说明这个方向是被验证过的——用 AI 做游戏的人确实需要结构。中文版把门槛降了一截,尤其是对不习惯读长篇英文文档的人。翻译质量我看了 README 部分,术语处理得比较稳,没有那种机翻的生硬感。至于它能不能真的帮你做出一个游戏,我的样本不多,只能说流程这一层它是扎实的,剩下的还是看你自己愿不愿意在每个关卡上认真做决定。工具能拦住硬编码,拦不住你想偷懒的心。

yangshun的博客 177

节日小游戏活动快速落地与高效转化技巧

比如,把平时验证过的消消乐、大转盘、接红包等经典玩法作为底子,只需要针对特定的节日(像春节、中秋)或者门店庆典,快速替换一套应景的UI素材和文案,再植入专属的节日福利。这种“旧瓶装新酒”的方式,能把开发周期压缩到极致,确保活动能踩着流量的爆发点准时上线。特别是对于实体门店,游戏通关后的奖励最好能直接引导到线下核销,比如“满100减20”的优惠券,这样能把线上的流量精准地拽进店里,形成实实在在的成交。这种基于熟人关系的推荐,比硬广有效得多,能迅速在朋友圈和社群里铺开,实现低成本的流量获取。

Hxzyxkf2016的博客 179

Claude Code做Unity项目移植(三): 使用SKILL进行自动化Git提交

本文介绍基于ClaudeCodeSkill的Unity自动化Git提交助手——unity-git-commit,通过四大模块实现提交前的智能检查与安全修复:1)校验Git仓库状态;2)验证Unity项目文件(如排除Library/Temp,确保.meta文件完整);3)依据可配置的C#命名规范自动识别并安全修复命名问题(避免序列化、反射等高危场景误改);4)生成精准提交注释,但强制人工确认。全程仅本地commit,不自动推送或破坏性操作,保障安全。核心思想为“机械化工作交AI,关键决策留人工”,显著提升提交

Aman1984的博客 635

PyBox有什么好用的数织小游戏吗?

我们今天梳理了市面上主流的数织解谜工具,包括在线网站和本地应用,并且重点介绍了 PyBox 中的数织 Nonogram。在线解谜网站**适合快速上手、免费体验,但不适合长时间离线使用。本地解谜工具**提供了离线体验,方便专注解题,但可能会涉及安装和广告问题。PyBox的数织 Nonogram**则在绿色无广告、免安装、完全开源、及DIY定制等方面有着明显优势,非常适合想要一个干净、可控、无干扰的游戏环境的用户。如果你追求极致无干扰、注重隐私、喜欢轻量应用,那么数织 Nonogram 绝对值得一试。

Sanmsung的博客 123

Windows远程桌面实现之二十:实现 moonlight 游戏串流协议之(一)

本文介绍在xdisp_virt中集成Moonlight游戏串流协议的实现过程。基于开源项目Sunshine逆向的GameStream协议,作者从零研究并自研实现Moonlight服务端网络通信部分,涵盖mDNS设备发现、nvhttp/nvhttps加密通信、nvrtsp协议交互及三类UDP数据通道(视频、音频、控制)。重点解决多客户端并发问题,采用串行处理机制确保连接一致性。通过自定义证书验证与密钥管理,完成配对与安全通信,最终实现低延迟、高性能的游戏串流体验,显著优于WebRTC浏览器方案。

fanxiushu的专栏 163

12、【MOD开发】【骑砍2】运行内存:游戏里的 pagefile 与虚拟内存

【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除。

HIT_Weston的博客 416
上一篇: JME商业游戏进阶一 (从图片开始)
下一篇: JME商业游戏进阶三 (地表层的神秘面纱2)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值