编程与软件工程pikuma.com
游戏开发中的等距投影
Isometric Projection in Game Development
2022 — 2024,它一次次回到首页
黑点是上首页(≥ 50 分)的那次投稿,空心点是没冲上去的投稿,点越大分数越高。
导读
pikuma 博客的一篇教程,系统讲解游戏中的等距投影(isometric projection):如何把屏幕坐标与地图瓦片坐标互相换算、瓦片地图如何排列绘制,以及实现等距视角所需的基础数学。作者用清晰的图示和代码把这类常被视作“黑魔法”的坐标变换讲透。
为什么经久不衰:等距投影是模拟经营与策略游戏的经典视角,文中的坐标换算和渲染思路十几年不过时,配合评论区老开发者的实战经验更显珍贵。
HN 评论精选
亲历者补充:等距坐标拾取极难,美术帧数爆炸迫使项目改用 3D 角色叠 2D 背景。
Eidos 在 90 年代发行过一款我参与编码的等距游戏《Abomination: The Nemesis Project》。这篇文章没写等距到底有多折磨人——我记得光是“2D 鼠标指针位置→被点击的 3D x,y,z 瓦片坐标”这一个计算就花了一整天。游戏本来打算全用像素美术,但角色要有 8 个朝向、每个动作(走、跑、射击、攀爬等)的每一帧都得渲染成位图,上千帧累积起来是天文数字的图形体积。于是开发中改成 3D 多边形角色叠在 2D 等距瓦片背景上,结果整个游戏都得跟着转换。那是 3D 引擎还不存在的年代,引擎都是自己写的。
kingcharles查看英文原文
Eidos published an isometric game I coded in the 90s: https://en.wikipedia.org/wiki/Abomination:_The_Nemesis_Project This article doesn't go into what a bitch isometric is. I remember spending a full day just on the calculation to go from 2D mouse pointer position->3D x,y,z tile position being clicked on. And the game was supposed to be all pixel art. But then you have to render thousands of frames of bitmaps for the characters to have 8 DoF with every frame of every action they can make (walk, run, shoot, climb, etc), which adds up to a quadrillion MB of graphics. So during development it was decided the game would be 3D poly characters over 2D iso tile backgrounds. So, converting the whole game was fun. Those were the days before 3D engines really existed. The 3D engine was the one you wrote.
读者呼吁补充高大精灵的深度排序/Z 序实战内容,并肯定作者。
自从玩了《模拟城市 2000》我就迷上了等距渲染和相关美术,特别爱看这类文章!我用 MonoGame 加自己写的 Tiled 渲染器做过一个小游戏来加深理解,在早期的 Windows Phone 7 设备上跑得极为流畅,复刻童年喜欢的游戏交互是件很有趣的练习——当然 1GHz 的 ARM 处理器比当年那些游戏机强太多,算有点作弊。我更想读到的是真实游戏中固定旋转的处理、深度/Z 序策略,最好带代码示例。我记得当时卡在高大的精灵动画与其他物体渲染顺序不对的问题上,比如高架桥或天桥上有人车通过。有带代码的高质量教程我愿意付费。补充:这是我第一次听说 Pikuma,看起来很棒!
layoric查看英文原文
I’ve had an obsession with isometric rendering and related art since I first played SimCity 2k and love seeing content like this! I wrote a basic game using MonoGame and my own renderer for Tiled to get a better understanding. I had it running on an early Windows Phone 7 device butter smooth and found it a fun exercise to try and replicate some of the interactions from the games I liked as a kid. Obviously even a 1Ghz ARM processor is miles ahead of what SimCity and other great titles ran on, so was kind of “cheating”. Something I’d like to read more of is supporting things like fixed rotation and strategies for depth/Z index from real games with code examples. I remember getting a bit stuck on animations of tall sprites with other game objects not rendering in the correct order. Eg a highway overpass or bridge with people/cars underneath. Would definitely pay for quality tutorials with code examples. Edit: this is the first I’ve heard of Pikuma, this looks great well done!
对作者教学质量的保留意见:早期课程理解不足,改版后明显进步。
我对 Pikuma 的感觉很复杂。Gustavo 是个好老师,讲得清楚易懂,但有时他似乎并不真正懂自己在讲什么。我上过他最早那门 ECS 游戏引擎课,前几小时还不错,但到课程中段就明显看出他并没真正理解 ECS,只是在实现自己的理解。后来我上了他全面重做的版本,这回他显然真正搞懂了 ECS,课程好很多。
ChrisRR查看英文原文
I'm not 100% sure what I think about Pikuma. Gustavo is a good teacher, his methods are fairly well explained and easy to understand, but sometimes he doesn't seem to know what he's talking about. I took his first ECS game engine course, and it was good for a few hours, but halfway through the course it was clear he hadn't really understood what ECS is and was implementing his understanding of it. I took his updated course which he'd overhauled and it seems he now properly understands ECS and the course was much better.
读者回忆用无代码工具做等距游戏的乐趣,认同坐标换算是核心乐趣所在。
很喜欢这篇文章,谢谢分享!我小时候是《过山车大亨》的粉丝,很想做自己的等距游戏。我用 The Games Factory(一个无需代码的拖拽式游戏制作工具)做了一个,特别享受推导屏幕与瓦片之间各种坐标换算的过程,就是文章里写的那类东西。我本来想做一款有湖泊和水上滑道的露营地经营游戏,但项目最终搁置了。感谢分享!
robbiejs查看英文原文
Loved the article, thank for sharing! I remember as a kid, being a big fan of Rollercoaster Tycoon, I wanted to create my own isometric game. I made it in The Games Factory, which was a no-code drag and drop game maker tool. I remember that I loved working out all the coordinate calculations from screen to tile and vice versa, like the stuff written in the article. I wanted to build a Camping Site Tycoon with lakes and water glides, but I abandoned the project. Thanks for sharing!
历次讨论
同类还值得读
开源应用架构
The Architecture of Open Source Applications
《开源软件架构》(AOSA)是一本在线免费书,邀请知名开源项目的作者亲自剖析其内部设计,涵盖 SQLAlchemy、LLVM、Audacity、Apache、Bash 等系统。
编程与软件工程上首页 9 次 · 2011–2024aosabook.org编辑精选编程语言简史:简短、不完整且多半错误
A Brief, Incomplete, and Mostly Wrong History of Programming Languages
一篇以戏谑、故意不准确的方式回顾编程语言史的博客文章,用夸张轶事和讽刺定义串起 Lisp、C、C++、Java、JavaScript、PHP 等语言。
编程与软件工程上首页 8 次 · 2009–2021james-iry.blogspot.comSQLite 是如何测试的
How SQLite is tested
SQLite 官方文档页,系统介绍 SQLite 的测试体系:多种测试方法(TCL 测试、模糊测试、回归测试、静态分析等)和海量测试用例,展示了这个小型开源项目如何靠极致测试获得…
编程与软件工程上首页 8 次 · 2009–2025sqlite.org编辑精选高级编程语言(2009)
Advanced programming languages (2009)
Matt Might 的经典文章,按用途推荐“高级编程语言”:如果追求就业就选主流语言,如果追求表达力、学术研究或创业,则推荐 Haskell、OCaml、Scala 等函数式语…
编程与软件工程上首页 8 次 · 2009–2022matt.might.net我的 Forth 与栈机器经历
Yosefk - My history with Forth & stack machines
作者以亲身经历回顾了使用 Forth 语言和栈式机器的历程:既赞叹其简洁优雅、代码量小、可自举的优点,也坦率指出栈操作在实际编程中的痛苦,以及 Forth 社区文化中的问题。
编程与软件工程上首页 8 次 · 2010–2024yosefk.com编辑精选