Display all entries matching field of a section
Looks to me like your solution is mostly correct, except for handling the gamesCatalogNumber. For that you could either:


test for specific publisher(s) by id or slug
test if gamesCatalogNumber is empty on the first entry (and assume that the publisher doesn't use catalog numbers), or 
(recommended solution) add a checkbox or lightSwitch field to the publisher called 'usesCatalogNumbers' and test for that.


Something like:

{# publisher template #}

{% if entry.usesCatalogNumbers %}
    {% set games = craft.entries.section('games').relatedTo(entry).order('gamesCatalogNumber desc') %}
{% else %}
    {% set games = craft.entries.section('games').relatedTo(entry).order('title asc') %}
{% endif %}

&lt;ul&gt;
    {% for game in games %}
        &lt;li&gt;{% if entry.usesCatalogNumbers %}{{ entry.gamesCatalogNumber }}: {% endif %}&lt;a href="{{ entry.url }}"&gt;{{ entry.title }}&lt;/a&gt;&lt;/li&gt;
    {% endfor %}
&lt;/ul&gt;

{% set params = craft.entries.section('publishers').order('title asc') %}
{% set prevEntry = entry.getPrev(params) %}
{% set nextEntry = entry.getNext(params) %}
{% if prevEntry %}&lt;a href="{{ prevEntry.url }}"&gt;Previous Publisher&lt;/a&gt; {% endif %}{% if nextEntry %}&lt;a href="{{ nextEntry.url }}"&gt;Next Publisher&lt;/a&gt;{% endif %}


I recommend this (instead of the other options) because it's a bit more explicit and extensible (i.e. allows you to add other publishers that use catalog numbers without modifying the templates).