Author Topic: FF7 World/Field Map Scripts and Encounters  (Read 2441 times)

picklejar

  • Crazy poster
  • *
  • Posts: 130
  • Karma: 10
    • View Profile
Re: FF7 World/Field Map Scripts and Encounters
« Reply #50 on: 2019-04-10 19:35:54 »
You're exactly right, there are many scenarios that make this tricky: GameMoment, walkmesh reachability, etc. Other examples might be "whether you have a Gold Chocobo", "whether you have a key item in your inventory", "whether Vincent is in your party", "how many Fort Condor battles you've fought". Anyway, yeah, you might think of this as "extra dimensions", or maybe it could be implemented as "conditions" tagged to a link?

And yeah, there's a lot of trickiness involving how to connect field maps together. For example, initially, my graphs were connecting Kalm and Nibelheim together, because when your party reaches the inn in Kalm and when Cloud tells everyone about the back story, the game (field script) performs mapjumps between the Kalm and Nibelheim field flevels (flashbacks). Another problem is (I think you guys may have already pointed it out) some of the coordinates are "relative coordinates", like 33=Yuffie encounter, 45=Leaving Highwind, etc.

picklejar

  • Crazy poster
  • *
  • Posts: 130
  • Karma: 10
    • View Profile
Re: FF7 World/Field Map Scripts and Encounters
« Reply #51 on: 2019-04-10 19:55:04 »
Hey codemann8 and DLPB, check this out. It's basically codemann8's world map image + nodes for every worldmap ID and field ID + links between them:

https://picklejar76.github.io/kujata-webapp/scene-graph.html

You can zoom and pan with your mouse. (Didn't test on mobile device, not sure how well that page works on a phone.)

Here's a screenshot in case it doesn't work in your browser:



The data is not clean, so you'll see a lot of "bugs" in the graph, but it's definitely "interesting". :D

Like codemann8 alluded to, it probably doesn't make sense to try to put all the nodes on a single graph like this, it would probably be better to split it into smaller sections. But here it is anyway. /shrug

codemann8

  • Cool newbie
  • *
  • Posts: 52
  • Karma: 3
    • View Profile
Re: FF7 World/Field Map Scripts and Encounters
« Reply #52 on: 2019-04-10 20:23:13 »
That's very cool, here's what I was working on before I put the project on a shelf for now. Mind you, this is a tool I made for myself to manually build graphs, not meant to be public, however, without the password you'll not be able to make changes, but you can view the map groups I have built already. Also, hovering over the nodes will give you the image of the map. It's very much unfinished but a start. Click the groups in the upper right listbox.

http://ff7.codemann8.com/mapgroups.php
« Last Edit: 2019-04-10 21:10:41 by codemann8 »

DLPB

  • No life
  • *
  • Posts: 9520
  • Karma: 320
  • For I realized that God's a young man, too.
    • View Profile
Re: FF7 World/Field Map Scripts and Encounters
« Reply #53 on: 2019-04-11 00:15:11 »
Really cool stuff!

picklejar

  • Crazy poster
  • *
  • Posts: 130
  • Karma: 10
    • View Profile
Re: FF7 World/Field Map Scripts and Encounters
« Reply #54 on: 2019-04-11 00:26:16 »
Oooooh, very nice job, man!

How do you decide the boundaries of a group? Is it automatic, or are you adding the nodes manually, via the tool itself? Looks like the latter? And I'm guessing that each group is basically a section of a walkthrough/ guide? Like, if we compare to the Prima Strategy Guide book, you'd have like 1 group per chapter?

codemann8

  • Cool newbie
  • *
  • Posts: 52
  • Karma: 3
    • View Profile
Re: FF7 World/Field Map Scripts and Encounters
« Reply #55 on: 2019-04-11 00:38:04 »
Basically, I have a table that I store all known possible map jumps, even including the unreachable scripts as I have no good logical way to disregard them. Then, I create a new group and manually add any map to it, it will show the map I added as a green node (meaning it's now within the group) and it will also auto add red nodes, which are the known jumps that are possible from that map, then with a series of left and right clicks, I can make any of those red nodes green (adding to the group, and then adding more red nodes off that), and also remove nodes that are definitely not possible ways out of the group (at that moment of the game). This process is also the same for specifying whether it's bidirectional or one way.

And yes, the grouping is manually controlled, meant for segmenting it into portions that a walkthrough may have. It's possible, if I keep the groups small enough, that multiple walkthrough authors can utilize this site to show their walkthrough on, they might combine some of these groups into one paragraph, so two node groups would merge and the site would basically combine the enemy bestiary stats and what-not accordingly.
« Last Edit: 2019-04-11 00:56:53 by codemann8 »

DynamixDJ

  • Crazy poster
  • *
  • Posts: 235
  • Karma: 22
  • 1111 1111 0111
    • View Profile
Re: FF7 World/Field Map Scripts and Encounters
« Reply #56 on: 2019-04-17 20:10:35 »
As DLPB said, really cool  8)

picklejar

  • Crazy poster
  • *
  • Posts: 130
  • Karma: 10
    • View Profile
Re: FF7 World/Field Map Scripts and Encounters
« Reply #57 on: 2019-04-19 19:35:59 »
Hey codemann8, your tool shows an image of the actual background. Are you generating the image directly from the tiles in the data, or are you getting it from some other outside source? (Those images would be really useful for a project I'm working on.)

codemann8

  • Cool newbie
  • *
  • Posts: 52
  • Karma: 3
    • View Profile
Re: FF7 World/Field Map Scripts and Encounters
« Reply #58 on: 2019-04-19 20:04:15 »
The field map images are stored within the field map files themselves. Same as how Makou Reactor extracts the background image. The caveat is that any field models that exist, that appear to be part of the background, won't be there, and there's not any good way to display those without a TON of work.

I think I might have just used MR to mass extract all the field map images tbh.

picklejar

  • Crazy poster
  • *
  • Posts: 130
  • Karma: 10
    • View Profile
Re: FF7 World/Field Map Scripts and Encounters
« Reply #59 on: 2019-04-19 20:20:36 »
I actually have a way to display field models in a webpage. The Kujata project translates the field graphics models and animations to glTF, and you can use a library like THREE.js to display the models and animations.

Whoa, I didn't see Makou Reactor's Mass Extract feature, until you just pointed out that it exists. Thanks a bunch! I'm going to try that right now!

sithlord48

  • No life
  • *
  • Posts: 1504
  • Karma: 33
  • Dark Lord of the Savegame
    • View Profile
    • Blackchocobo
Re: FF7 World/Field Map Scripts and Encounters
« Reply #60 on: 2019-04-21 12:44:08 »
If you do manage to discover where the WM formation data is stored in the PSX file, then try also to find the Yuffie Encounters. They've always alluded me, and I've had to resort to TFerguson's FAQS for that info.

Anyway, field map IDs 1 ~ 64 are all shortcut-jumps to various places on the World Map. Using a placeholder ID for the World Maps as a Field Map means that the devs could easily assign a Field Map ID as the jump, without having to input the x,y,&z coordinates for the WM each time.

01 - WM0 - Midgar Southern Entrance
02 - WM1 - Kalm Entrance
03 - WM2 - Chocobo Ranch Entrance
04 - WM3 - Mythril Mine Entrance Swamp Side
05 - WM4 - Mythril Mine Entrance Junon Side
06 - WM5 - Fort Condor Entrance
07 - WM6 - Junon Entrance
08 - WM7 - Temple of The Ancients Entrance
09 - WM8 - Sleeping Man's Cave Entrance
10 - WM9 - Blacksmith's House Entrance
11 - WM10 - Mideel Entrance
12 - WM11 - Mideel Materia Cave Entrance
13 - WM12 - Costa Del Sol Entrance
14 - WM13 - Mt. Corel Entrance
15 - WM14 - North Corel Entrance
16 - WM15 - Corel Prison Entrance
17 - WM16 - Gongaga Entrance
18 - WM17 - Cosmo Canyon Entrance
19 - WM18 - Nibelheim Southern Entrance
20 - WM19 - Rocket Town Entrance
21 - WM20 - Lucrecia's Waterfall Entrance
22 - WM21 - North Corel Materia Cave Entrance
23 - WM22 - Wutai Entrance
24 - WM23 - Wutai Materia Cave Entrance
25 - WM24 - Bone Village Entrance
26 - WM25 - Corral Valley Entrance Snow Side
27 - WM26 - Icicle Inn Entrance Southern Side
28 - WM27 - Chocobo Sage's House Entrance
29 - WM28 - Round Island Materia Cave Entrance
30 - WM29 - Underwater (Last Coordinates)
31 - WM30 - Underwater Gelnika Entrance
32 - WM31 - Last World Map Coordinates
33 - WM32 - Last World Map Coordinates
34 - WM33 - Last World Map Coordinates
35 - WM34 - Last World Map Coordinates
36 - WM35 - Junon Ship Leaving Junon (Main Event)
37 - WM36 - Junon Ship Arriving at Costa Del Sol
38 - WM37 - Junon Ship Leaving Junon
39 - WM38 - Junon Ship Leaving Costa Del Sol
40 - WM39 - Wutai Shores
41 - WM40 - Highwind Outside Junon (After Escape)
42 - WM41 - Underwater By Junon's Reactor (After Mission)
43 - WM42 - Nibelheim Northern Entrance
44 - WM43 - Mt. Nibel Entrance Nibelheim Side
45 - WM44 - Last World Map Coordinates
46 - WM45 - Mt. Nibel Entrance Rocket Town Side
47 - WM46 - Icicle Inn Entrance Northern Side
48 - WM47 - Great Glacier Entrance
49 - WM48 - Rocket Town North of Entrance
50 - WM49 - Last World Map Coordinates
51 - WM50 - Diamond Weapon Surfaces (Event)
52 - WM51 - Last World Map Coordinates
53 - WM52 - Last World Map Coordinates
54 - WM53 - Highwind Outside Junon
55 - WM54 - Ancient Forest Entrance
56 - WM55 - Underwater (Last Coordinates)
57 - WM56 - Corral Valley Entrance Ravine Side
58 - WM57 - Forgotten Capitol Entrance
59 - WM58 - Highwind Over North Crater
60 - WM59 - Icicle Area Snowstorm Northern Entrance
61 - WM60 - Icicle Area Snowstorm Eastern Entrance
62 - WM61 - Icicle Area Snowstorm Southern Entrance
63 - WM62 - Icicle Area Snowstorm Western Entrance
64 - WM63 - Icicle Area Snowstorm Cavern Entrance

Awesome. This will be added to the location data in ff7tk.

DynamixDJ

  • Crazy poster
  • *
  • Posts: 235
  • Karma: 22
  • 1111 1111 0111
    • View Profile
Re: FF7 World/Field Map Scripts and Encounters
« Reply #61 on: 2019-04-21 15:53:05 »
@Sithlord if you've had a chance to explore my Enemy Database & Calculator, you'll find screenshots in the "Pics" version of each world map jump point, which could help as a visual aid

picklejar

  • Crazy poster
  • *
  • Posts: 130
  • Karma: 10
    • View Profile
Re: FF7 World/Field Map Scripts and Encounters
« Reply #62 on: 2019-04-21 22:46:02 »
Kujata also has world map metadata for wm0, wm1, etc., in these files:

coords: https://github.com/picklejar76/kujata-data/blob/master/metadata/field-id-to-world-map-coords.json

menu names: https://github.com/picklejar76/kujata-data/blob/master/metadata/wm-field-menu-names.json

links from fields to world map locations: https://github.com/picklejar76/kujata-data/blob/master/metadata/scene-graph.json

By the way, to get a little technical, there's a slight difference between the world map coordinates for entering and exiting a place. For example, when you exit a town from a field script to the world map, you typically appear at a very specific coordinate, slightly away from the town, and the main menu says your location is something like "Outside Kalm". However, to re-enter the town, you don't go to that exact same coordinate ("slightly away from the town"), you go to the location of the town itself. (And I assume you don't have to go to an exact coordinate, but more like a small area, perhaps triggered by a mesh triangle or a set of trigger lines.)

And of course there are the "special" scenarios where, instead of going to a specific coordinate, you go to something like "last field map location" or "relative location" (e.g. getting Yuffie, exiting Highwind, etc.)

codemann8

  • Cool newbie
  • *
  • Posts: 52
  • Karma: 3
    • View Profile
Re: FF7 World/Field Map Scripts and Encounters
« Reply #63 on: 2019-04-21 23:40:29 »
I believe what i found earlier in the thread is that there are coordinate walkmeshes, that when entered, a script triggers and determines the field map to enter. There is an unknown parameter with a value 1 thru 4 that triggers within a walkmesh, and depending on that parameter it will go to a different area. This part I haven't investigated as to what it is exactly. For instance, the same walkmesh can bring you to the Zolom hung in a tree and also into Mythril Mines, but both have a different parameter tied to it. This you can see earlier in the thread.