I’ve now written two posts that were far lengthier than I anticipated, about the way that UO’s resource system was originally intended to work. 난 지금보다 훨씬 그 UO의 리소스를 시스템 작동하도록 원래 의도에 대한 방법을 예상 lengthier 두 게시물을 작성했습니다. The first dealt with underlying data structures , and the second with applications of those data structures to the actual world . 기본 데이터 구조와 처리, 그리고 실제 세계에 그 첫 번째 애플 리케이션과 데이터 구조의. I want to talk a bit about future directions that we didn’t get to pursue. 나는 우리가 추구하는 못해서 미래의 방향에 대해 조금 얘기하고 싶다.
Cool ways to use what we already had 우리는 이미이 무얼 가지고 사용할 수있는 방법을 죽인다 The mining system in UO was an example of “transmutation” in action. UO에서 채광 시스템의 행동에 "변신"의 본보기였다. We placed ORE in the chunk eggs based on the presence of rocks and the terrain rock texture. 우리 ORE 계란 바위 덩어리의 존재와 바위 지형 텍스처를 기준으로 배치했다. We mined ORE out by clicking on rocks or the rock texture and transferring the ORE to the new “pile of ore” object. 우리 ORE 밖으로 바위 또는 바위 텍스처와 광석의 새로운 "더미"를 클릭하여 개체 전송으로 광석 채굴.
When I added in the varieties of metals to the system, the way I did it was by adding a dynamic variable to the chunk egg. 때 금속의 종류에있는 시스템에 추가, 그런데 난 덩어리 달걀로 동적 변수를 추가로 해냈다. The were called “object variables” or “objvars” in UO parlance, and they were essentially flags with values that could be attached to any dynamic object. "개체 변수"또는 UO 말투에 "objvars"라고했다, 그들은 본질적으로 가치를 그 어떤 동적 개체에 붙어있을 수있는 플래그했다. You could tag someone as “BEAT_THE_HARPY” with a value of “TRUE” and then use hasObjVar(target, “BEAT_THE_HARPY”) to see if the objvar was present, or val = getObjVar(target, “BEAT_THE_HARPY”) to get that value into a variable for script use. 당신이 TRUE "의 값을"BEAT_THE_HARPY ""다음 hasObjVar (대상, "BEAT_THE_HARPY") objvar 경우, 현재 또는 발 = getObjVar (목표를 보는 데 사용할 수있는 누군가가 태그 "BEAT_THE_HARPY")로 그 가치를 얻으려면 스크립트를 사용하기위한 변수. These objvars were persistent, so you could build complex systems out of them. 이러한 objvars, 그래서 당신은 복잡한 시스템을 구축할 수있는 그들의 영구적인했다.
I simply attached a little script to every chunk egg that checked to see if it had an objvar that defined a metal type. 금속 유형을 정의한다면 그것은 단순히 모든 청크 달걀 한 objvar 있었다면 그것을보고 확인하는 작은 스크립트를 첨부합니다. If it didn’t, then it randomly chose a metal type and set the objvar to that value. 만약 아니라면, 그때는 그것을 무작위 금속 유형을 선택했을 때 그 가치에 objvar 설정합니다. This meant that after this script was updated, every chunk in the world bore a different kind of ore. 이 후이 스크립트를 업데이 트했습니다 즉, 세상의 모든 덩어리 광석의 다른 종류의 지루한 의미가있다. I weighted some to be rare and others to be more common. 좀 드문이 있어야하고, 다른 많은 공통점이 가중되고있다.
When the ORE was mined, I had the mining script transfer that variable to the new object along with the ORE resource. 으로 광석을 채굴 할 때, 난으로 광석 채굴 스크립트 리소스와 함께 전송은 새 개체 변수를했다. I also had it tint the ore graphic based on a standard lookup table, dependent on what the value of the objvar was. 또한 표준 조회 테이블, objvar의 가치가 뭔지에 대한 의존도를 기반으로 광석을 그래픽 도네요. And thus colored armor was born — we simply had each step transfer the variable along. 따라서 색깔의 갑옷 - 우리는 단순히 각 단계에 따라 변수를 전송했다 태어 났어요.
This worked even when we actually recycled the ORE and conjured up METAL out of thin air instead. 이 때에 우리가 실제로 허공으로 광석을 재활용 및 금속 되살아나게하는 대신 근무 중에있다. This was the step of refining the ore into ingots. 이 ingots로 광석을 정제의 단계가됐다. You could also combine ore — I don’t recall how we handled this, but it was probably by picking the commoner of the two types. 또한 광석을 결합할 수있다 - 우리가 어떻게이 처리는 기억이 안나지만, 아마도 두 가지 유형의 평민 따기로했다. It would have been fairly easy to add new metal types that were not minable but were only available as alloys, too. 그동안 그 minable되지 않은 비교적 새로운 금속 활자를 추가하는 것이 쉽지는했지만 유일한 합금으로,도 사용할 수있습니다. In a more modern system, we would have instead had types of METAL such as IRON or COPPER that inherited from the base type — and that is in fact how SWG worked. 좀 더 현대적인 시스템에서는, 우리는 대신의 유형을 못했을 아이언 또는 구리와 같은 기본 유형에서 상속 금속 - 그리고 그 사실에 근무하는 방법을 SWG입니다.
This sort of transmutation, where you query the amount of RESOURCE1, delete it, and then create a corresponding amount of RESOURCE2, permitted the concept of “refinement” of one type of quality into another. 변성, 이런 종류의 어디에 당신은 그것을 삭제한 다음 쿼리 RESOURCE2의 RESOURCE1의 양에 해당하는 금액을 만들려면, 다른으로 품질의 한 유형의 "상세"의 개념을 허용했다. COTTON or FLAX into CLOTH is a similar thing, only with the wrinkle that it permits two different initial sources to become the same sort of thing in the end. 면바지나 FLAX 헝겊으로 비슷한 것, 그것이 결국은 같은 종류가 다른 두 가지의 초기 소스를 허용 주름 전용입니다.
I mention this example just to point out that there were a lot of possibilities for the use of transmutation of one resource type to another; for example, a stone mage could use up ORE as resources and turn it into MAGIC; really, we should have made one’s mana pool be literally how much MAGIC resource they represented. 난 그냥 그 밖에 다른 지점은 한가지 리소스 타입의 변신의 사용에 대한 가능성을 많이했다; 예를 들어, 마술사 돌을 원석 자원과 매직으로 바꿀; 정말로, 우리가 사용할 수 있어야이 예제를 언급 그들 표현 그대로 하나의 마나 수영장 매직 얼마나 많은 자원이 될했다. A druid could have instead drawn power from the amount of GRASS or TREE that was around. 드루이드 잔디의 양을이나 트리에서 대신 그려 수있는 힘을 가지고 주위를했다. And a necromancer — well, every time something died, it could have added DEATH to the chunk egg based on what was killed; a necromancer would then be able to “mine death magic” from spots where many things had been killed. 그리고 사악 - 그래, 할 때마다 뭔가가 죽었을 추가했습니다 수있는 죽음의 덩어리 계란을 어떻게 살해를 기반으로, 다음 사악하고 관광 명소에서 "내 죽음을 마법"여기서 많은 것들 타죽기라도 수있을 것이다. Had we done this, I am sure we quickly would have had necromatic sacrifice altars, and they would have intentionally herded players (who of course would carry much power!) to those places to die. 난 우리가 신속하게 necromatic 희생을 제단을 못했을, 그리고 선수들이 의도적으로 수용했을 거라 확신 우리가이 일을했다면 (물론 전력을 많이 안고!) 죽기를 그 곳으로. Temple of Doom, here we come… 우리 템플 오브 둠, 이리와 ...
Other applications based solely on what was already present: 이미 선물로받은 전적을 바탕으로 다른 애플 리케이션 :
- You could do real tracking, based on things leaving traces in the chunk eggs. 당신, 계란에 흔적을 떠나는 일들이 덩어리를 기반으로 진정한 추적 할 수있다.
- You could have NPCs or creatures who collected or desired items with specific resources. 당신 NPCs하거나 또는 특정 자원을 가진 항목을 원하는 사람은 수집된 생물을 가지고있다.
- You could easily do a nice “detect magic” or really, “detect anything” sort of informational spell, with strength of the glows dependent on the amount of the resource present 쉽게 좋은 ""나 정말 마술을 탐지, "할 수있는 아무것도 감지 정보 마법의"정렬, 은은하고 리소스를 현재의 금액에 따라 강도와
- You could create secret or transmutation paths — mix MAGIC and METAL to make MITHRIL or something, regardless of what the item looked like originally. 당신의 비밀 또는 변성 경로를 만들 수 - 믹스 마법과 금속하게 MITHRIL이나 뭐, 상관없이 원래의 물품이 어떻게 생겼.
- You could do “melting down” of materials. ""소재의 붕괴를 할 수있다.
- You could create greater or lesser susceptibility to damage based on conditions. 당신이 조건을 바탕으로 더 큰 피해 또는 덜 느끼기 쉬운 만들 수도있습니다. It’s easy to imagine a HUMIDITY value stored on a chunk egg — it could even move around. 그것은 습도 가치 덩어리 계란에 저장된 상상하기 쉽습니다 - 그것도 이동할 수있습니다. And then it could affect the growth rate of GRASS or the decay rate of METAL. 그리고 나서 잔디 또는 금속의 부식 속도의 성장 속도에 영향을 미칠 수있다.
- This also reflects the whole “dragon fire breath actually sets things on fire” thing. 이것도 사실은 화재에 "가지 것들을 집합 전체"용의 숨결 화재를 반영한다.
- Player actions could affect resources on them, such as reputations with certain groups, karma, and so on. 플레이어의 행동들을 특정 그룹, 카르마와 명예와 같은 리소스에 영향을 줄 수 있도록했다. They could acquire the “scent” of things they worked with often, for example. 그들은 그들의 자주와 함께 일했다는 "향기"를 인수, 예를 들면. This would then replace a typical stats system, which would need to be hardcoded to interact with every other data type in the game. 이 다음 경기에서 다른 모든 데이터 형식과 상호 작용을 하드 코딩해야 할 것이 전형적인 통계 시스템을 대체할 것이다.
- This could, for example, allow a disease to be transmitted invisibly across the game, affecting only, say, magical reagents — and players could be the carriers without knowing it, unless it was detected by a spell or skill. 이것은, 예를 들어, 게임을 통해 전염되는 질병을 투명, 유일한 영향, 시약 마법의 말 -과 선수들은 그것을 모른 채 사업자 수도 않는 마법이나 스킬에 의해 발견됐다 허용할 수있습니다.
- Most obviously, had we chosen to incur the cost of streaming the chunk eggs, we could have actually made the rendering of the chunks change based on what the chunk egg represented. 가장 분명히, 우리는 청크 계란 스트리밍의 비용을 초래한을 선택했다, 우리가 실제로 무엇을 표현 덩어리 계란을 기반으로 변경 덩어리의 렌더링을 만들었을 수도있다. As the grass is eaten, bare dirt is left behind. 잔디로 먹습니다, 맨발로 흙을 남겨 놓고있다. As the ore-bearing rock is reduced, change the rock tile to gravel. 으로 광석 - 베어링 바위, 자갈로 바위 타일 변경으로 줄일 수있다. As the temperature changes, draw dead grass or even snow. 온도 변화로 죽은 잔디 또는 심지어 눈을 이끌어낼 수있습니다. And so on. 등등.
I could go on; suffice to say that even with just an abstract property system and no real AI work, there’s lots of potential for a lot of interesting and fresh gameplay. 난 갈 수있다;가 그냥 추상적인 재산 제도와 실제 AI는 일을하더라도, 이미 많이 나와있다 고만 해두지의 많은 잠재력과 신선한 게임 플레이에 대한 흥미.
What we didn’t have: causality 우리가 뭘해야하지 않았다 : 인과 관계 But the real issue with something like the dragon example is, “how do I know that the dragon is hungry, and not just a random spawn?” In other words, there needs to be a sense of purpose to what is going on. 하지만 용을 예를 들면, "내가 어떻게 용을 배고프지 않다는 것을 어떻게 알지처럼 뭔가 진짜 문제가 아닌 산란 그냥 무작위로?"다른 말로하면, 거기에 무슨 일인가하는 목적의 감각이 있어야합니다.
The reason why it matters that the dragon is hungry and not just a random spawn is because it suggests multiple ways to solve the problem. 때문에이 문제를 해결하기 위해 여러 방법을 제안하는 이유는 그 용도와 산란이 무작위가 아니라 그냥 배가 고픈 문제입니다. You could kill the dragon. 당신은 용을 죽일 수있다. You could also feed it to get it to go away. 그것도 멀리 갈 피드 수있습니다. Herd deer in between you and the village, let’s say. 당신과 마을, 한번에 허드 사슴. The problem is, maybe there is no reason. 문제는, 아마도 거기에 이유가 없다. How can the player tell? 플레이어는 어떻게 알 수 있습니까?
Let’s take the simpler case of some rabbits who eat the lettuce out of a farmer’s garden. 의 일부 농부가 정원의 상추 외식 토끼의 단순한 사건을 맡아 보자. What you really want is for the farmer to tell you “I’s gots me some rabbit issues; filthy buggers’re eatin’ muh lettuce! 당신이 정말로 원하는 것은 농부는 "나는 토끼 gots 좀 문제가 당신에게; 더러운 buggers're 먹는 'muh 상추! I’ll pay ye ta ’sterminate’em!” 난 조교 천하 무적 'sterminate'em 지불거야! "
The proposed but never implemented method for handling this required knowledge at one step remove. 1 단계에서 제거 처리에 대한 지식이 필요하지만, 제안된 적이 구현하는 방식입니다. The farmer would DESIRE his lettuce; this means he would walk around where it was, when he was not hungry, and if he could pick it up, he’d transfer it to his home. 농부는 자신의 욕망 상추 것이;이 그가 어디 배고프지 않을 때,이 있었고, 그는 그걸 가지러 수있다면 주위를 걸어 자신의 집으로 송금 줄 것을 의미합니다. But the rabbits want to EAT the lettuce. 그러나 토끼는 상추를 먹고 싶어. If the farmer knew the name and template type of whatever was making him unhappy by competing for his desired resource, then he could complain about it. 만일 농부가 그의 이름을 알고 있고 무엇을 원하는 템플릿 리소스에 대한 경쟁에 의해 불행의 종류를 만들어 다음, 그는 그것에 대해 불평을 수있습니다. And if we tracked what the player killed, he’d know that they were good rabbit exterminators and possibly provide a reward, without there being a static quest defined. 그리고 만약 우리가 무엇을 죽인 플레이어를 추적, 그 사람들이 착한 토끼 exterminators 가능성과 보상을 제공, 거기 않고 정적 모험을 정의 알고 있으니까.
What’s more, if players killed all the rabbits, but what came along next time as a spawn that ate lettuce happened to be deer, or even a lettuce blight, then the farmer would respond in the same way — anything that was eating “his” lettuce would be somethng he could complain about, and reward those who took action. 뭐가 더있어, 선수들이 모두 토끼를 죽였다면, 그런데 무슨 그 사슴, 또는 심지어 상추 황폐되고, 그럼 농부 같은 방식으로 대응하겠다고 - 먹는 "어떤 일이 일어났었 상추 먹은 다음에는 균사로 따라와서 "상추에 대해, 그리고 그 사람에게 보상 조치를했다 무슨 일이있을 것이라고 불평을 수있다.
Similarly, in the village-attacked-by-dragon case, the villagers would have to like having other villagers around, so they could complain that “their” villagers were being destroyed by something else. 마찬가지로, 마을에서 - 공격 - 의해 - 드래곤의 경우, 다른 주민들은 마을 주변에있는 것만 같은, 그래서 그들은 "그들의"뭔가 다른 사용자에 의해 파괴되고 주민들은 불평을 수있는 것이다. You could extend this to any number of things. 당신이 어떤 것들이 어떤 수를 늘릴 수있다. Let’s say that the smith loves “his” METAL objects. 그런 스미스는 "자신의"금속 물체를 사랑한다고 가정해 봅시다. If a rust monster wandered through town and damaged the METAL, then he would complain about that but no other villagers would unless they also DESIRED METAL. 괴물 녹을 경우 금속이 손상 마을을 돌아다니던와 다음, 그 것이지만, 다른 마을에 대해 불평하지 않는 한 그들은 금속을 원하는 것이다.
The implementation problems here are tricky. 여기에 까다로운 문제가 구현됩니다. First, we would have needed to have some sort of registry so that the farmer could know about the rabbits, who are a third party to his relationship with his beloved vegetables. 첫째, 우리는 그 농부가 자신의 사랑하는 야채와 그의 관계를 제 3 자에게하는 토끼에 대해 알 수 레지스트리의 일종이 필요한 것이다. Worse, we would have also needed to relay the player actions against this third party so that the farmer could supply rewards and commentary. 최악의 경우, 우리도 이렇게 타사와의 작업을 릴레이하는 선수는 농부 보상과 논평을 공급 수가 필요했을 것이다.
Because of these hurdles, and because there was always something more urgent going on, we never got this in. 이러한 장애물 때문에, 그리고 항상 뭔가가 있기 때문에 그것보다 더 급한 일이 있었는지, 우리는 결코이 들어 왔어요
A similar thing that we wanted above and beyond the basic resource system was the concept of targeted desires. 이와 비슷한 일이 우리가 원하는 타겟 위에 기본 리소스 시스템을 넘어 욕망의 개념이었다. Instead of abstractly liking all METAL or all MEAT, we wanted to support the ability for something to pick a favorite: a preferred sword, a favorite pet. 추상적으로 모든 금속이나 육류 대신 마음에 들지 않으면, 우리가 무언가에 대한 능력이 좋아하는 선택 : 원하는 검, 좋아하는 애완 동물을 지원 싶었어요. The test case that we designed for this was actually a love triangle. 우리가이 사실은 사랑의 삼각 관계였다 위해 고안된 테스트 케이스.
Both Fred and Bob would DESIRE (to be crude) HUMANFEMALE. 둘 다 '프레드'와 밥 () 브렌트유도 HUMANFEMALE있을 욕망을 것이다. They would both search around for an object that met their desire, which would mean they would both hang around a female human NPC whenever they weren’t hungry. 개체에 대한 주위의 여성들은 모두 인간의 전인대 때마다 주위 사람들이 배가 안됐다 걸어다는 것을 의미하지는 것이 자신의 욕망을 만난 것이라고 그들은 모두 검색할 수있습니다. However, if they found one that satisfied their desire (probably with a bit of a random roll) they would fixate on only that NPC, and poor Nellie would find that both Bob and Fred hung around her a lot. 그러나 만약 그들 중 하나가 무작위로 롤의 비트 (아마도) 그들은 단지 전인대, 그리고 가난한 넬리 밥과 프레드 모두 그녀를 많이 찾을 것이 주변의 근심을 흥분시키는 것이 자신의 욕망을 만족을 발견했다.
Now, HUMANFEMALE is a consumable resource. 자, HUMANFEMALE a 소모 자원입니다. Bob, when around Nellie, is actually reducing it. 밥, 넬리, 주위 사실을 줄이는 것입니다. And that means, when you talk to Fred, he would be able to say “”I’s gots me some Bob issues; filthy buggers’re eatin’ muh Nellie! 그리고 그 때 프레드 이야기 즉, 그는 ""나는 밥 gots 좀 문제가 말 할 수있을 것이다; 더러운 buggers're 먹는 'muh 맙소사! I’ll pay ye ta ’sterminate’im!” (or something of the sort). 난 조교 천하 무적 'sterminate'im 지불거야! "일종의 (또는 뭔가). Bob would be able to say the same thing in reverse. 밥 말 할 수있을 것이라고 역방향에서 같은 일을했다. You could even solve the problem by finding something else for one of the two swains to do. 한번이라도 두 swains 위해 할 수있는 뭔가 다른 사람을 찾는하여 문제를 해결할 수있습니다. Even more interesting — if the dragon came along and ate Nellie, both Bob and Fred would be the first in line to seek revenge, or give a reward to a player who tackled the dragon problem. 더욱 흥미로운 - 용의가 따라와서 장기 행을 경우에, 복수를 추구하거나 용을 문제가 태클 선수에게 보상을주는 것이 먼저 넬리, 둘, 프레드 밥 먹었어요.
Similarly, rather than manually setting up paths and schedules for NPCs, you could create a script that has them gradually increase a FATIGUE value, or that switched their SHELTER from WORK to HOME locations based on the time of day. 마찬가지로, 수동보다는 NPCs에 대한 경로와 일정을 설정하면 그들을 점차 FATIGUE 가치가 증가하거나 자신의 은신처를 바꿔 홈에서 하루의 시간을 기준으로 위치를 위해 노력하고있다는 스크립트를 만들 수도있습니다. You could have law-abiding citizens have an aversion to anything that produced DARK, so that at night they would cluster in lit interiors and under lamps, whereas only thief NPCs would be in the shadows. 당신은 법을 준수하는 시민들이 수도 - 아무것도 그 생산 어둡고, 그래서 인테리어에 비추 밤에는들은 클러스터 및 램프 아래서만 NPCs 반해 그림자 도둑이 될에게 혐오감을 가지고있다.
The highest level of interface to all of this that we would have wanted for players would have included the notion of town criers and other news sources that pick “stories” from the ether and broadcast them. 모든이의 인터페이스의 최고 수준의 선수들을 위해 우리가 원했던 것이 마을 criers와 다른 뉴스 소스의 개념은 에테르에서 선택 "이야기"와 그들이 방송을 포함 시켰을 것이다. “Farmer Hayseed is pissed off about his lettuce getting eaten!” “Plague of street urchins won’t leave noble warriors alone!” “Fred kills Bob in jealous rage over Nellie!” and so on. "파머 Hayseed 그의 상추 먹히고에 대해 화가 나지!" "거리의 개구쟁이의 고귀한 전사 혼자 떠나지 않을거야 페스트!" "프레드 질투심에 맙소사! 넘는 살인을 밥"등등.
Problems: closed loops, homeostasis, feedback 문제 : 루프, 항상성, 피드백 폐쇄 All of these sorts of applications rely on a large bank of dynamically assembled text that is contextual to the situation. 이러한 종류의 동적으로 조립하는 모든 응용 프로그램의 텍스트의 대형 은행에 그 상황에 의존하는 콘텐츠입니다. With the current desire for international localization of text, it’s unlikely that you can even execute on this. 텍스트의 국제 지방화를위한 현재의 욕망, 그것은 당신이에 실행할 수있는 가능성은있다. Localization tends to demand static text, and indeed, UO had piles of dynamically assembled text that was removed when the title was localized to other languages, costing the game’s dialogue much of its flavor. 현지화, 실제로는 정적 텍스트를 요구하는 경향이, UO, 자사의 맛을 대화에 비용이 많이의 게임 타이틀을 다른 언어로 지역화 때 동적으로 조립 텍스트의 말뚝 제거했다.
All of these higher-level applications can only really be built on top of a fully functional animal-level behavior system. 이러한 높은 수준의 애플 리케이션 모두 - 유일한 진짜 전기능 동물의 위에 만들 어질 수있다 - 수준의 동작 시스템. What’s more, in work since then, I have become persuaded that in fact, you need to drive the simulation to lower levels, such as humidity and temperature, just so you don’t find yourself creating special cases for simple behaviors. 그 이후로 무슨 일을 더, 난 그 사실에, 당신은 낮은 수준으로, 습도 및 온도와 같은 시뮬레이션 운전을, 그렇게 간단 자네의 행동에 대한 특별한 경우를 찾지 못하면 만들 필요가 설득되고있다. This leads to the concept that you could in fact build the whole world out of this, and just render textures and objects based on what resources are present, a concept first demonstrated in ALife examples such as Sugarscape . 이 개념은 그 사실이 밖으로, 그리고 온 세상을 만들 수 그냥 텍스처와 개체를 렌더링하는 데 단서 어떤 자원을 바탕으로 한 개념을 최초로 시연 ALife 예제에서 Sugarscape 같은 존재입니다.
In fact, it should now be evident that what this represents, in totality, is just a fairly elaborate “artificial life” engine, grown to the point where it encompasses spawning, basic behaviors, and even a higher-order quest system. 사실, 지금이, 총합에 무엇을 상징, 증거가 있어야 상당히 "정교한 인공 생명"엔진, 어디로, 기본 동작을 산란하는 지점으로 성장, 그리고 심지어는 높은 - 순서를 탐구하는 시스템입니다.
However, without the following ingredients, there’s little point to implementing something like this: 그러나, 다음과 재료없이, 거기에 약간의 지점이 같은 구현하려면 :
- It has to be visible and responsive to players. 그것을 볼 수있는 선수로 반응하고있다. This includes exposing causality. 인과 관계를 노출이 포함되어있습니다. Otherwise, it might as well be random. 그렇지 않으면, 그것뿐만 아니라 무작위 수있습니다.
- NPCs need to be able to communicate to players about wants, and need to react to those wants. NPCs에 대해 선수들에게 통신할 수 있기를 원하고, 필요로하는 이들에게 대응할 필요가있다.
- Static data must be avoided at all costs, which is incredibly difficult for a traditional game development team. 정적 데이터에 대한 모든 지출에 대해서는 대단히 어렵다는 전통적인 게임 개발팀은 피해야합니다.
- The myriad of variables must push towards homeostasis, rather than boom-bust cycles. 무수한 변수의 항상성을 향해 밀어합니다 - 흉상주기보다는 붐. A lot of Alife sims end up in boom-bust, and that’s not interesting to users. Alife 심즈의 많은 붐에서 생을 마감 - 흉상, 그 사용자에게 흥미 아니에요.
- Naturally renewing resources can’t be in a closed loop, because of player hoarding effects. 자연스럽게 갱신 자원 폐쇄 루프에 쌓아 두는 효과가 있기 때문에 선수가 될 수없습니다.
- You have to solve CPU issues with pathfinding and searches in order to make the system tenable. 당신 pathfinding 검색하기 위해서는 시스템의 CPU가 견딜 수 있도록 함께 문제를 해결하는 데있다.
There were discussions on MUD-Dev circa 1998 about other means to handle this sort of system within a reasonable CPU budget. 거기에 토론 - MUD 합리적인 CPU를 예산 범위 내에서 처리하는 시스템의 일종 다른 수단에 대한 개발이 1998 년경했다. One approach that would probably work for the latter is to use “level of detail” for the areas. 아마 후자를 위해 일할 것이 하나의 접근 ""지역에 대한 세부 사항 수준을 사용하는 것입니다. If no players are around, stop instancing up individual wolves hunting individual rabbits; instead, save all those off, and calculate periodically how many wolves and how many rabbits would be there after a certain amount of time. 플레이어가없는 경우, 주위에있는 개별 늑대 개별 토끼 사냥 최대 인스턴스를 중지하는 대신, 그 사진을 저장, 그리고 주기적으로 얼마나 많은 늑대 토끼를 계산하고 거기에 얼마나 많은 시간의 일정 금액을 후 것이다.
You could stuff the world data into a quadtree and run higher and higher-level sims, instancing all the data back out only when you needed to interact with it in granular fashion; or you could timestamp the last interaction, and “catch the sim up” when a player approaches. a QuadTree으로 당신은 데이터 및 실행할 수있는 물건은 세계가 높을수록 높은 - 레벨 심즈, 다시 그걸로 세분 때만 패션에 상호 작용하는 데 필요한 모든 데이터를 인스턴스; 또는 너, 그리고 마지막으로 상호 작용을 타임 스탬프 수있다 "시뮬레이션 따라잡기 "선수 때 접근한다. This latter method was in fact used for handling harvesters and the like in SWG, since they tended to reside in areas that we actually took offline when no players were around. 이후 이들 지역에서 우리가 없을 때 선수가 계셨다했다 오프라인 실제로 거주하는 경향이 후자의 방법은 사실과 SWG에서 같은 harvesters 처리에 사용했다. Using hillclimbing and broadcasting rather than constant radial searches is another approach. 검색을보다 방송이 hillclimbing과 다소 다른 접근법을 사용하여 상수 요골. Lastly, truly treating the whole thing as an artificial life landscape would allow you to even use image processing techniques to update the grid, since they have been highly optimized. 마지막으로, 진정한 인공 생명 프리으로 당신은 그들이 고도로 최적화된 이후왔다, 이미지 프로세싱 기술을 사용할 수 있도록 그리드를 업데이 트하는 것이 모든 것을 처리했다.
On the closed loops, I have come to believe they were basically a mistake. 닫힌 루프에서, 그들이 기본적으로 믿고 실수를했다 왔습니다. The real world offers resources that are infinite in practice for most situations ; it is local scarcity that is interesting. 현실 세계에서 가장 실천하는 상황에 대한 무한한 자원을 제공하며 그 지역의 희소성 흥미 롭 그것이다. The issues with exposing the causality of things can be solved, I am sure, but they will take some work. 사물의 인과 관계를 노출과의 문제, 제가 확신, 해결할 수 있지만 몇 가지 일을한다.
In conclusion 결론적으로 To my mind, this sort of algorithmic approach to developing a virtual world is not only the past, in UO’s case, but also the future. 내 마음을하려면 가상 세계의 접근이 정렬 알고리즘을 개발했을뿐 아니라, 과거, UO의 경우뿐만 아니라, 미래입니다. It is not hard to imagine our crude “METAL” with no parameters acquiring things like “melting point” and “brittleness” and then being plugged into physics simulations in the holodeck. 아니 매개 변수 "녹는 점"과 "brittleness"같은 것들을 취득과 함께 우리의 원유는 "금속"상상하는 것은 어렵지 않아 다음과 물리 시뮬레이션에 홀로 연결되어있다. There comes a point where a robust simulation model, even an abstracted one, is a cheaper thing to develop than the giant piles of use-once quests and data that we currently enjoy in the MMORPGs today. 거기에 강력한 시뮬레이션 모델, 심지어 추상적인 하나의 거대한 더미를 사용하여 개발을보다 싼 물건 - 한번 모험과 데이터 MMORPGs에 오늘 우리가 현재 즐기고있는 시점이다. Even social worlds would benefit from having this sort of underlying mechanic, because if implemented properly, it exposes simplified levels of robust interaction to everyone and gives people something to talk about. 만약 제대로 구현하기 때문에, 그것을 모두에게 강력한 사회적 상호 작용의 수준을 단순 노출에도 이런 종류의 문제에서 세계의 기본적인 기계공 혜택을 것이라고 얘기하고 사람들이 뭔가를 준다.
I also think that there is nothing wrong with having traditional static data layered atop this. 또한 이미 전통적인 정적 데이터 계층이 꼭대기 갖는 것도 잘못이라고 생각합니다. Making an NPC with a hardcoded quest, no FOOD, SHELTER or DESIRE needs, and blissful ignorance of the situation around him is still easy in a system of this sort. a 하드코드된 탐구와 함께, 그리고 그 주변 상황의 무지 행복한없고 식량, 피난처 또는 욕망이 필요없는 이런 종류의 시스템에 아직 전인대 만들기 쉽습니다. On the other hand, how much better if he knows enough to freak out when the dragon comes up to the castle and starts frying chamberlains. 반면에, 만약 그가 용의성을에게 다가와서 때 튀기 시작 chamberlains 놀래게 더 많은 방법을 충분히 알고있다.
I’d much rather be burning CPU on this sort of thing, frankly, than on 3d collision. 전 차라리 이런걸, 솔직히에, 3 차원 충돌을보다 CPU가 불타고있을 거라고. A lot of players complain about whether or not they can jump over a short wall, and believe me, I feel their pain (a story for another day) — but the kinds of immersive power that a simulation like this can bring opens a lot more doors. 많은 선수들이 짧은 벽의 여부를 뛰어 넘다 수 있고, 날 믿어, 난 또 하루 (이야기) -하지만, 몰입형 전원이 가져올 수있는 이런 종류의 시뮬레이션을 더 많이 열립니다 그들의 고통을 느낄 불평 문.
In the long run, I believe that all the pressures are towards simulationist environments, rather than handcrafted ones. 긴 안목으로 보면, 난 그 모든 압력 simulationist 환경, 증손자보다는 사람을 향해있다. CPU power continues to outpace the cost of human capability to design static scenarios. CPU 속도는 인간 능력의 비용은 정적 시나리오를 설계하고 빠르다을 계속하고있습니다. At some point, reality will catch up to our designs from 1995. 어느 시점이되면, 현실은 우리의 설계로 1995 년부터 따라잡을 것입니다.
Postscript for the curious — I was reminded in the comment threads that the original UO strategy guide actually had in it all the resource values for everything in the game, as well as things like the actual AI algorithm for falling through FOOD, SHELTER, and DESIRE. 추신이잖소 호기심을위한 - 나 원래 UO 전략 가이드는 사실에 식품, 대피소, 그리고 욕망을 통해 하락에 대한 실제 인공 지능 알고리즘과 같은 게임에서 모든에 대한 모든 자원의 가치뿐만 아니라 사물 스레드가했던 코멘트에 떠올 렸어요 합니다.
[...] 3 부 지금 게시됩니다. [...]
[...] 우리는 이미 온라인 폰 UOUltima 일렉트로닉 아츠에서 채광 시스템이 가진 것을 사용할 수있는 방법을 죽인다. 행동에 "변신"의 본보기였다. 우리 ORE 계란 바위 덩어리의 존재와 바위 지형 텍스처를 기준으로 배치했다. 우리 ORE 밖으로 바위 또는 바위 질감과 광석의 새로운 "더미"를 클릭하여 개체 전송으로 광석 채굴. 때 금속의 종류에있는 시스템에 추가, 그런데 난 덩어리 달걀로 동적 변수를 추가로 해냈다. "개체 변수"또는 UO 말투에 "objvars"라고했다, 그들은 본질적으로 가치를 그 어떤 동적 개체에 붙어있을 수있는 플래그했다. 당신이 TRUE "의 값을"BEAT_THE_HARPY ""다음 hasObjVar (대상, "BEAT_THE_HARPY") objvar 경우, 현재 또는 발 = getObjVar (목표를 보는 데 사용할 수있는 누군가가 태그 "BEAT_THE_HARPY")로 그 가치를 얻으려면 스크립트를 사용하기위한 변수. 이러한 objvars, 그래서 당신은 복잡한 시스템을 구축할 수있는 그들의 영구적인했다. 금속 유형을 정의한다면 그것은 단순히 모든 청크 달걀 한 objvar 있었다면 그것을보고 확인하는 작은 스크립트를 첨부합니다. 만약 아니라면, 그때는 그것을 무작위 금속 유형을 선택했을 때 그 가치에 objvar 설정합니다. 이 후이 스크립트를 업데이 트했습니다 즉, 세상의 모든 덩어리 광석의 다른 종류의 지루한 의미가있다. 좀 드문이 있어야하고, 다른 많은 공통점이 가중되고있다. 으로 광석을 채굴 할 때, 난으로 광석 채굴 스크립트 리소스와 함께 전송은 새 개체 변수를했다. 또한 표준 조회 테이블, objvar의 가치가 뭔지에 대한 의존도를 기반으로 광석을 그래픽 도네요. 따라서 색깔의 갑옷 - 우리는 단순히 각 단계에 따라 변수를 전송했다 태어 났어요. 이 때에 우리가 실제로 허공으로 광석을 재활용 및 금속 되살아나게하는 대신 근무 중에있다. 이 ingots로 광석을 정제의 단계가됐다. 또한 광석을 결합할 수있다 - 우리가 어떻게이 처리는 기억이 안나지만, 아마도 두 가지 유형의 평민 따기로했다. 그동안 그 minable되지 않은 비교적 새로운 금속 활자를 추가하는 것이 쉽지는했지만 유일한 합금으로,도 사용할 수있습니다. 좀 더 현대적인 시스템에서는, 우리는 대신의 유형을 못했을 아이언 또는 구리와 같은 기본 유형에서 상속 금속 - 그리고 그 사실이 어떻게 전쟁 은하 SWGStar 폰 소니 온라인 엔터테인먼트입니다. 일했다. 변성, 이런 종류의 어디에 당신은 그것을 삭제한 다음 쿼리 RESOURCE2의 RESOURCE1의 양에 해당하는 금액을 만들려면, 다른으로 품질의 한 유형의 "상세"의 개념을 허용했다. 면바지나 FLAX 헝겊으로 비슷한 것, 그것이 결국은 같은 종류가 다른 두 가지의 초기 소스를 허용 주름 전용입니다. 링크 : UO의 자원 시스템, 제 3 부 150)? 150 : this.scrollHeight) "> __________________이 도구는 꺼져라! - Raph 코스터 [...]
댓글 [...] [...]
온라인. 가상 세계 디자인의 관점에서 거기에 어떤 흥미 롭 더군요. 여기에 3 개의 문서가있습니다 : 부품 하나가 기본 데이터 구조에 대해서입니다. 두 번째 부분은 가상 world.Part 3에 해당 데이터 구조의 응용 프로그램에 대해서는 그들이 함께 추구 UO 못해서에 대한 미래의 방향을, 그리고 자신의 창조물에 대한 풍부한 아이디어의 원천입니다. 그 잠시 동안 그 기사 나를 다시 생성된 게시판에 RPGDX 가고 있었다 permeating 마법의 토론이 떠오르더
[...] 어쨌든. Raph의 웹사이트 및 내 브레인 스토밍을 구현하는 데 도움이 시간을 통과하는 일부 시스템에 3 개의 게시물을 읽어보십시오. 훨씬 더 흥미로울 것이라고 일부 분기점지도 공부를 한 사람의 선한 모델링 "대"와 "닉의 어머니가"환율이나됐다 무엇을 가지고 다니는 것을 알고있습니다. [...]
[...] 허용! A는 A부터 Y 허용 O는 O는 허용 )) 전, C는 å : (http를 : / / www.raphkoster.com/2006/06/05/uos-resource-system-part-3/) [...]
[...] 그냥 참고로, Raph 코스터, 재미 이론 "의 저자,"그냥 그들은 자원 울티마 온라인에서 사용되는 시스템을 만드는 데 사용하는 프로세스를 설명하는 일련의 기사의 블로그를 마쳤다. 거기에 흥미로운 것들을하면 더 많은 환경 - 롤플레잉 기반 구축 (대본, 콘솔 - style)의 반대로 찾고있습니다. 여기에 3 개의 문서가있습니다 : 부품 하나가 기본 데이터 구조에 대해서입니다. 두 번째 부분은 가상 세계에 그 데이터 구조의 응용 프로그램에 대한 정보입니다. 그들이 함께 추구하는 세 부분 UO 못해서 미래의 방향에 대해, 그리고 자신의 창조물에 대한 풍부한 아이디어의 원천입니다. 그 기사, 나를 다시 마술 permeating하면서했던 토론의 날 돌아가게하고 그것을 되짚어 상기하고 싶게 만든다. Heh._________________Visit 의식은 웹 사이트에 게임을 자사의 개발에 관한 기사를 읽고있다. [...]
[...] rnum = Math.round (Math.random () * 100000);는 document.write ( "); 울티마 온라인 Chatzone 메인 답글 달기 UO의 자원 시스템 자파 12.195.89.1306/6/2006 12:45 업 : 54 오후이 얼마나 일들이 경기에서 우리 선수들만에 맨발로 표면에 파고들 수 있었다 효과에 대해 많은 설명했다. 뭔가에 아주 좋은 읽으 몇 사람 notice.http : / / www.raphkoster.com/2006/06/03/uos-resource-system/http://www.raphkoster.com/2006/06/04 / uos-resource-system-part-2/http : / / www.raphkoster.com/2006/06/05/uos-resource-system-part-3/ [...]
매우 현실이 아니야!
내가 몇 게시물이 항목을 작성하는 요즘 내게 영감을 가지고 읽어 봤습니다.
Raph의 블로그에 UO의 자원 시스템 (http://www.raphkoster.com/2006/06/03/uos-resource-system/). 이 매혹적인 게시물, 세 부분으로, 목표, 디자인, impleme에 대한 협상에 ...
[...] 당신들? http://www.raphkoster.com/2006/06/03/uo ...중인 CE - 시스템 / http://www.raphkoster.com/2006/06/04/uo 이거 본 적 있으세요 ... 안에 - 일환 - 2 / http://www.raphkoster.com/2006/06/05/uo ... em-part-3/_________________-Marcaaus http://ctprofiles.net/951789 [...]
[...] 난이 해답을 알고는 경찰의 종류 - 밖이지만, 당신은 게임을 역학과 함께 아무것도 할 수 있어야한다고 생각 reference-able/flagged, isSleeping (), isFighting () ... 보이지 알고 경기 역학, 이미 귀하의 플래그입니다. 여기에 서있다면 짧은 descs 깃발을 확인, 즉 : % 전인대를 기반으로 수정할 수있다면 좋을 것이다. % 전인대 % PC의 싸움이다. 그냥 NPCs과 자원을 자신의 블로그에 Raph 코스터에 대해 몇 가지 흥미로운 기사를 게시, 최신입니다 : http://www.raphkoster.com/2006/06/05/uos-resource-system-part-3/ 그 '관련 싶네요 tradeable 플래그와 폭도를 볼 수있습니다. 예를 들어, 플레이어가 마피아, 증인 폭도 플레이어를 공격하기 위해 깃발을 얻습니다 사망. 저 깃발은 특정 기간에 대한 isTradeable 폭도 다른 마피아로 실행되는 경우, 그들은 깃발을 전달할 수있습니다, 다음은 마피아 등 () 플래그 hostileToPlayer 데리러의 기회가있다. 선수들이있다면 그들이 다음에 합격 할 수있을 niceToPlayer 깃발 부탁 폭도 않으면 그냥 국기에 대한 적대적해야하지 않는다; 플레이어 캐릭터를 좀 더 유기, 자연 세계에 영향을 미치는 방식으로 게임이 방식에서보다 스크립트가 모든 일을 폭도 말하고있다. [...]
[...] 제가 좀 사랑 Raph 코스터. 그는 울티마 온라인의 자원 체제의 논의에 걸쳐 3 기사, completley 읽기 가치가있다. 그는 참조 '빵을 굽다'문서를 다시 쓴 문서에 잠시 동안, 나는 잘 봐 줄 만하 재생도 지적한다. 우리가 그 특정 개체 (아직 템플릿에 정의된다는)를 가지고 못했다 그것의 일부가, 자원의 집합이다. A 리소스 단순한 레이블 - 이상도 이하도했다. (훨씬 나중에, SWG에서, 그 팀,하지만 이것도 또 하루 게시물에 대한 통계와 자원의 개념을 소개할 것이다.) 서버는 전 세계에 존재하는 리소스의 목록을 갖고 있었는데, 설계자들이 매우 쉽게 새로 만들 수있다 합니다. 자원 금속, 나무 같은 것들, 그리고 헝겊했다. 하지만 그들은 마법과 같은 추상적인 자질 같은 선수와 다른 일들도 있었다. [...]
울티마 온라인에서 리소스를 시스템에 대한 게시물을 세), 작업 방법, 그리고 왜 그랬 겠죠. 뭐 정말, 나에게 최소한, 어떻게 자원 시스템 매우 무겁게 행동의 넥타이를 읽을 흥미 롭 생물.
더 흥미로운 AI는 Raph 코스터 울티마 온라인의 생태 / 경제 시스템에 대한 () 1 부, 2 부, andpart 3을 참조하십시오, 그리고 ""MMORPGs에 내려 NPCS의 바보에 대한 토론 금광의 정보를 게시하고있다. 울티마 온라인과 Raph의 의견을 어떻게 스타워즈 은하에 대한 계획은 결국 이러한 정교한 - 유지력 및 단순화의 호의에 깊은 sixed (케이터링을 언급하지 않기에 가서
쓰레기 더 용서할. 그리고 소년은 그것을 영원히 무작위입니다. 그들은 함께 가야 그들은 그저 지어낸이야; 내가 근본적으로 해결 '의 되는대로에만 온다면 전혀 다른 종류의 사촌에 대한 내 기대를 내려 놓겠다. 코스터 단지 3 - 광고 Raph 부분 은요 UO 자원 시스템 게시
"일하는 메모리는"비록 내가 꽤이 구체적으로 무엇인지 잘 모르 겠네. 아직 그것을 보지 못했습니다 (System.Environment.WorkingMemory 또는 무언가에이 발견, 나는.) 제도도 울티마 Onlines 리소스 계획에 대해 읽었네 : 1 부 Part2Part3 내가 발견한 그것으로 내가 연주하는 데 사용 UO 흥미 롭군요. 최근 mmorpgs 내게 전혀 관심이 없다, 그들은 단지, 싱글 플레이어 스타일의 광대한 게임 대화방에서 협력하고있다. UO 게임과 게임의 목표가 더 선수들과 상호 작용에서 비상했다,
[...] 저는 며칠 동안이 문제에 대해서 늦었지만 UO에 대한 원래의 리소스 시스템을 개발하는 방법에 Raph의 최근 일련의 가치가 3 게시물 읽기 (1 부, 2 부, 3 부)입니다. 내가 무엇을 시도했습니다 그래서 전에는 실패했지만 검사의 분명한 이유뿐만 아니라이 기사를 추천해 때문에 특히 관심이 링크 누가 내 논문을 읽을 시간을 촬영하고 그들에게 가치의 소재를 발견 내에서 누구에게나있을 것입니다 합니다. UO에서 무엇을하려했다 뭐 그런 생각의 실천 사례, 그리고 난 분명 내가 알고 있던 그 시간에 참고로이 작품에 포함된 것이다. [...]
자신의 블로그 피드를합니다. 오늘, 내가 다시 우연히 블로그에 가서 그가 최근 몇 경기에서 좋은 게시물을 발견 아날로그했다. 게시물의 Raph 때 3 시리즈 코스터의 최근 게시물 (여기, 여기 andhere) 울티마 온라인에 관한 코멘트도 그였다. 그 첫 번째 게시물에 대한 인식이 경기에서 제이 회담을 어떻게 현실이다. 다음 게시물에서는 그가 AI는 더 신뢰할 수 있도록하는 방법에 옛 GDC는 세션에서 고른 득점에 pontificates. 마지막 게시물
[...] 오리지널 UO이 기사를 한 울티마 온라인, Raph 코스터의 원래 설계자에 의해 작성된의 연속이다. 그는 소니 인터랙티브에서 일하거나간에 스타워즈 은하, 살일걸요 UO의 후속 제품을 사용했다. 내가 출전한 적이 없어, 나도 몰라. 이 문서 Brittannia의 세계에 있었던 일을해야하는 방법을 설명합니다. 그들은 조금 괴짜이고, 당신이 이해 해 주길 이상의 컴퓨터를 작동하는 방법에 대해 약간의 게임을 정말 놀라운 어떻게 이런 생각을 주위에 머리를 해결할 수 있도록 프로그래밍되어 꼭 필요합니다. 그것을)은 1997 년에 그것을 기술적 어려움 때문에 UO의 릴리스 (느린 컴퓨터를 다시 만든 적이있다. 그러나, 나는 그것을 읽을 가치가 있어요, 그리고 몇 가지 고려 사항이 터지면 팀 개편되면 가치가 괴물 spawns이나 퀘스트를 추가하고 싶어하거나 그런 일은있을 수도있습니다. 는 제 3 부분으로 깨진이며, 그들은 서로를 연결하지 않습니다, 그래서 나는 그들을 여기 별도로 링크합니다. UO의 자원 시스템 : 파트 1 UO의 자원 시스템 : 제 2 부 UO의 자원 시스템 : 제 3 [...]
[...] UO의 자원 시스템, Raph 코스터에 부 3 [...]
[...] Ultima Online’s Resource System III [...]
[...] http://www.raphkoster.com/2006/06/03/uos-resource-system/ http://www.raphkoster.com/2006/06/04/uos-resource-system-part-2/ http://www.raphkoster.com/2006/06/05/uos-resource-system-part-3/ [...]
[...] was originally planned/attempted in the early UO and the reasons that it didn’t work (Part 1, 2, 3).Which is very interesting to me, since I have been reading up what I can. In a strangely related [...]
[...] of day, atleast not how they invisioned it. These articles can be found here, part 1, part 2, and part 3. These are very interesting reads by the way. I think anybody who enjoys MMOs should read them. I [...]
UO resource system write-up, long lost (and missed by me as reference material)–of course he did this in June 2006 when I was concerned with things like interviewing for a new job. UO’s Resource System (part 1) UO’s Resource System (part 2) UO’s Resource System (part 3)
[...] by Raph Koster on UO’s (planned and never fully implemented) Resource System: Part 1 Part 2 Part 3 This is pretty much the reason I got into MMOs in the first place - I was thoroughly intrigued by [...]
[...] http://www.raphkoster.com/2006/06/04/uos-resource-system-part-2/ http://www.raphkoster.com/2006/06/05/uos-resource-system-part-3/ Damn, I want an MMO that has all that stuff in it in the worst way. Hell, I would love to have [...]
[...] by Michael Chui on Mon Oct 01, 2007 11:07 pm Scopique wrote:And don’t forget the stuff that didn’t MAKE it into UO, like the dynamic ecosytem.If you have no idea what he’s talking about,http://www.raphkoster.com/2006/06/03/uo … ce-system/http://www.raphkoster.com/2006/06/04/uo … em-part-2/http://www.raphkoster.com/2006/06/05/uo … em-part-3/Also,http://www.raphkoster.com/2006/06/09/why-dont-our-npcs/ [...]
[...] :-)Bis dahin kann ich das hier empfehlen:UO's ressource systemUO's ressource system 2UO's ressource system 3by Raph CosterUngefähr so möchten wir es handhaben. Wenn du es mitberechnest und das system so [...]
I can’t explain why, but I always look at my memories in UO through rose-colored glasses. I remember playing back in 1997 and getting PK’d all the time as I mined ore (which was always gone due to the now-defunct resource banksystem). I took some time off for a few years but eventually found my way back. A lot had changed in my time away, but I found a good group of friends to help me through the transition. UO was a sandbox in many ways. Origin Systems provided the world but the
[...] Raph’s Website » UO’s resource system, part 3 (tags: gamedev software design) [...]