roguelike是啥意思

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了roguelike是啥意思相关的知识,希望对你有一定的参考价值。

游戏玩法与rogue类似的一款游戏。
roguelike游戏具有随机性。在roguelike游戏中每一局游戏开始都会随机生成不同的游戏场景、敌人以及宝物。每次游戏开始都是一次崭新且不可复制的冒险。可以极大提高游戏的可玩性。roguelike游戏具有进程单向性。
在roguelike游戏当中存档是有一定的条件,存档功能只能保存当前的游戏记录,一旦这个存档被读取的话,你此前的其他存档都将会被覆盖和删除。
这就意味着游戏进程是单向的,玩家在游戏过程中要十分谨慎和小心,不然的话可能导致满盘皆输,重新开始。
参考技术A

Roguelike是欧美国家对一类游戏的统称,是角色扮演游戏(RPG)的一个子类(Roguelike-RPG)。指二十世纪八十年代初,由Michael Toy和Glenn Wichman两位软件工程师共同在UNIX系统上开发,在大型机上运行的游戏。

始祖游戏为Rogue,在2009年被游戏权威杂志“PC WORLD”评为“史上最伟大的十个游戏之一”。

Roguelike游戏需要遵循的规则

通过随机生成地牢来增强可玩性。

游戏使用永久死亡机制。

游戏是回合制的。

游戏不应该有过多限制。

游戏应该为玩家提供完成同样方式的多种不同方法,并不同方法的复杂程度应有所不同,是为所谓的“自然的游戏体验”。

为了生存玩家必须妥善管理自己的资源。

游戏核心内容应是“砍杀游戏”。

游戏要求玩家探索地图,寻找宝藏并杜绝背板。

参考技术B 不少玩家热衷于Roguelike类游戏,那么这个Roguelike到底是什么意思,又是怎么由来的呢,下面带大家了解一下Roguelike这类别游戏统称的由来。感兴趣的玩家往下看看吧。

roguelike游戏什么意思
  Roguelike是欧美国家对一类游戏的统称,是角色扮演游戏(RPG)的一个子类,Roguelike本身的理念源自于二十世纪七十年代的游戏,并利用了一些PLATO系统(即第一代网络游戏),完成了基础建设。

  目的是在电脑上再现“DND”游戏体验,并且严格遵循“DND”游戏规则的单人回合扮演游戏。

  “Rogue”这款游戏在当时非常受欢迎,以致后来衍生出了一系列与“Rogue”相类似或者同类型的游戏作品,这些作品被统称为“Roguelike”。

死亡细胞

html CHCH.js Roguelike

<pre id="maze"></pre>
<script>
//Why a roguelike?
//A RL is a sweetspot between effort vs. new features
//You get something awesome every 5 LoC or even just by tweaking a single variable, and this makes it fun to program
//What's exciting about JS is that you can make something you can see in a browser, fast, and then share it with everyone
//JS being a simple to understand, practical, and easy to share language has helped it develop an awesome community
//Things to tweak
//Try adding a ghost trail to the player by not replacing their last position with a .
//Try making an AI that moves randomly, that moves towards the player, that runs away from the player (like tag)
// pacman AI have some great examples of these behaviours: http://gameinternals.com/post/2072558330/understanding-pac-man-ghost-behavior
//Try writing code to generate a map, ideas here: http://ondras.github.io/rot.js/manual/#map
//Try tweaking the visibility code, you can make the whole maze invisible, make only certain items always visible, 
// give the player a direction and let them only see that way
// or even try and implement a better algorithm: http://journal.stuffwithstuff.com/2015/09/07/what-the-hero-sees/
//Try adding more items, doors that you can stand on but not see through, different treasure, keys, stairs to different levels, go crazy!
const maze = [
  '##########',
  '#@.......#',
  '#........#',
  '#..###...#',
  '#....##..#',
  '#..T...R.|',
  '##########',
]

let map = maze.map(line => line.split(''))
let player = {x: 1, y: 1, char: '@'}
let robot = {x: 7, y: 5, char: 'R'}
const keyCodeToDirection = {
  37: {x: -1, y: 0},
  38: {x: 0, y: -1},
  39: {x: 1, y: 0},
  40: {x: 0, y: 1}
}

function addPoint(point1, point2) {
  return { x: point1.x + point2.x, y: point1.y + point2.y }
}

function render(map) {
  document.getElementById('maze').innerHTML =
    filterMap(map, player).map(characters => characters.join('')).join('\n')
}

function filterMap (map, player) {
  return map.map((line, y) =>
    line.map((character, x) =>
      canSee(player, x, y) ? character : ' '
    )
  )
}

function canSee (player, x, y) {
  return rectAroundPlayer(player, 5)
    .some(point => point.x === x && point.y === y)
}

document.onkeydown = function(e) {
  const direction = keyCodeToDirection[e.keyCode]
  if (direction) {
    e.preventDefault()
    player = move(player, direction)
    robot = move(robot, direction)
    render(map)
  }
}

function move(entity, direction) {
  const newPosition = addPoint(entity, direction)
  const newCharacter = map[newPosition.y][newPosition.x]
  if (newCharacter === '.') {
    return teleportEntity(entity, newPosition)
  } else if (newCharacter === 'T') {
    if (entity.char === 'R')
      alert("Oh No! The robot wins!")
    else
      alert("Congrats! You win!")
  }
  return entity
}

function teleportEntity(entity, {x,y}) {
  map[entity.y][entity.x] = '.'
  map[y][x] = entity.char
  return {x, y, char: entity.char}
}

render(map)

// Util Functions
function rectAroundPlayer (point, diameter) {
  const radius = Math.floor(diameter / 2)
  return getRect({x: point.x -radius, y: point.y -radius}, {x: point.x +radius, y: point.y +radius})
}

function getRect(topLeft, bottomRight) {
  const line = range(topLeft.x, bottomRight.x + 1)
  const column = range(topLeft.y, bottomRight.y + 1)
  const box = line.map(x => column.map(y => ({x,y})))
  return flatten(box)
}

// General utils
function flatten (arr) {
  return [].concat.apply([], arr)
}

function range(a, b, step) {
  if (arguments.length === 1) {
    b = a;
    a = 0;
  }
  step = step || 1;
  var x, r = [];
  for (x = a; (b - x) * step > 0; x += step) {
    r.push(x);
  }
  return r;
}

</script>

以上是关于roguelike是啥意思的主要内容,如果未能解决你的问题,请参考以下文章

不仅仅是因为随机性强,Roguelike游戏究竟有什么好玩?

你从未体验过的船新玩法 《主公走一步》首创Roguelike三国

PPPoE是啥意思,PPPoE是啥意思

“?”是啥意思?在 Erlang 中是啥意思? [复制]

“this”这个词是啥意思,“static”是啥意思?

“||”是啥意思在 var 语句中是啥意思? [复制]