Correlating Code & Community (part 4)

Finally, in order to round out this case study, I would like to offer a few concrete examples of how social-network and code-level analyses can be correlated to bridge the gap between code and community.

In the image below, I have filtered the network graph to show only those modders who refer in their paratexts to the game sequel Super Mario Bros. 3, hence bringing inter-ludic seriality to bear on these actors' para- and infra-ludic interventions (in the categories outlined in Digital Seriality).

Screenshots: Palladio network graph of references to SMB3 (left) and Tableau visualization of those modders' code
Figure 14. Palladio network graph of references to SMB3 (left) and Tableau visualization of those modders' codes.

The resulting graph (on the left) reveals a small network of actors whose serializing activity involves mixing and referencing between Super Mario Bros. 1 and Super Mario Bros. 3, as well as between each other. The Tableau screenshot on the right then selects just these modders and reveals possible similarities and sites of serialization. (They can then be subjected to closer scrutiny with a program like hexcompare or tools derived from the modding community itself; in the Tools section of this webtext, under the Code Diff sections, users can interactively select two patches or modded ROMs and compare them directly in the browser.) For example, the Tableau graph above reveals that the modder AP's Super Mario 3-inspired patches from September 2005 and flamepanther's "Super Mario Bros. DX" and "DX fix" patches from October 2005 exhibit traces of possible overlap that deserve to be looked at in greater detail. The modder insectduel's "After World 8" (a mod that is referenced by many in the scene) from February 2006 shares large blocks of around 31,000–32,000 bytes with many of the prolific modder Googie's mods (which themselves seem to exhibit a characteristic signature) from 2004–2006. Of course, recognizing these patterns is just the beginning of inquiry, but at least it is a beginning. From here, we still have to resort to close reading techniques and to tools that are not conducive to a broad view; more integrated toolsets still need to be developed. Nevertheless, these methods do seem promising as a way of directing research, showing us where to look in greater depth, and revealing trends and points of contact that would otherwise remain invisible.

To demonstrate what some of this more detailed work looks like, I would like to return finally to the "Millennium Mario" mod I considered briefly in Part 2 of this case study. As we saw, there was an interesting infratextual shoutout and some ASCII art in the opening section of the hexcode. With Tableau, we can filter the diff view to display only those mods that exhibit changes in the first 500 or so bytes of code, where these non-executable elements appear, and to map that section of code in greater resolution (this is done, in the interactive visualization, with the slider in the bottom right corner, marked "Start"—referring to the byte count at which a change in the patched game begins). The result is shown in Figure 15, where we find two distinctive (visual) matches between "Millennium Mario" and Raysyde's "Super Mario Bros.—Remix 2" from 1999, and between ATA's "Super Mario Bros.—Yoshi's Quest" and Krillian's "Mario Adventure 2," both from 2000. The latter two mods, while clearly different from the former two, also exhibit some overlap in the changes made to the first 20 or so bytes, so it will be interesting to compare them as well.

Screenshot: Tableau visualization of mods filtered to modifications within the first 500 bytes
Figure 15. Tableau visualization showing code-level matches (location only) between mods.
Screenshot: hexcompare comparison of SMBRemix2 and Millennium Mario
Figure 16. Using Hexcompare to examine content changes in the previously identified mods.

Having identified a small set of mods that deserve further comparison, we can now use hexcompare (or another diff-capable hex editor, such as the one included here under the Tools section) for finer analysis—that is, to determine if the content of the changed addresses is also identical (since the visual match in the Tableau graph only tells us that something has been changed in the same location in two given mods, not whether the same change has been made there) (see Fig. 16).

Screenshot: hexcompare comparison of SMBRemix2 and Millennium Mario, detail view
Figure 17. ASCII art signature appearing in two different mods.

Here we find that Raysyde's "Super Mario Bros.—Remix 2" does in fact display the same changes in the opening bytes, including the reference to modder "toma" and the ASCII art (see Fig. 17). This, then, is a clear indication of infra-ludic serialization: the borrowing, repetition, and variation of code-level work between members of the modding community. Significantly, this essentially serial connection (an infra-serial link) would hardly be apparent from the level of the mods' respective interfaces (see Fig. 18).

Side-by-side comparison of title screens SMBRemix2 and Millennium Mario
Figure 18. Side-by-side comparison of title screens SMBRemix2 and Millennium Mario

(It is worth emphasizing, however, that the interface level is hardly irrelevant. Thus, in the Tools section, under Mods & Interfaces, users can filter and sort the title screens of all 240 mods. These comparisons, when directed by the social network and diff-mapping tools highlighted here and available to users as well, can be quite illuminating in terms of visual resemblance or contrast. Additionally, the title screens themselves contain a large amount of metadata, including dates, names, instructions to users, and references to software or communities.)

Screenshot: hexcompare comparison of Millennium Mario and Yoshis Quest
Figure 19. Hexcompare comparison of Millennium Mario and Yoshis Quest.

When, on the other hand, we compare "Millennium Mario" and ATA's "Super Mario Bros.—Yoshi's Quest," we find the ASCII art gone, despite the visual match in Tableau's mapping of their diff indications for the opening bytes. Again, the Tableau graph only reveals that something has changed at the same address in the two mods, but not what it is. A hex editor reveals the code-level difference (as seen in Fig. 19).

"Yoshi's Quest" corresponds in this respect to Krillian’s "Mario Adventure 2" (as seen in the hexcode comparison in Fig. 20). Thus we have another clear indication of infra-ludic serialization, which would hardly have been evident other than by means of a directed filtering of the large dataset, in conjunction with a close analysis of the underlying code.

Screenshot: hexcompare comparison of Yoshis Quest and Mario Adventure 2
Figure 20. Hexcompare comparison of Yoshis Quest and Mario Adventure 2.

Again, however, this is just the beginning of the analysis—or more broadly of an encounter between DH and CCS. Ideally, the dataset would be expanded beyond ROMhacking.net's database; other online communities would be mined for data; and, above all, more integrative tools would be developed for correlating social network graphs and diff maps, for correlating community and code. Perhaps a crowdsourced approach to some of this would be appropriate: The study of a code-centric community seems to call for a code-centric communal effort of its own.

Hence, this is not the end but rather the beginning of the story, which really takes off in the interactive Tools section of this webtext. There, I have collected a variety of interactive visualization tools—including social network graphs and the diff maps made in Tableau—as well as the dataset upon which they are based and the code of all 240 mods, which can be compared in a browser-based hex editor. The reader is invited to experiment with these tools and to expand or even challenge my analysis of the serialization processes at work in the code and the community of the Super Mario modding scene. Alternately these methods might be adapted to other code bases and other online communities. Alas, like digital seriality itself, this is inherently work in progress, and thus it remains work "to be continued"...