yeah, probably notaz' stuff for the most part.
so crawling /usr/share/applications doesnt really help a lot there...
it may even make things worse, as the same .pnd may throw out different .desktop files (in case of duke3d-eduke32 there's three of them).
anyways: i think the easiest way will be something like this:
<pseudocode>
crawl /usr/share/applications into "appslist" <- to have an idea what's properly installed
read games.json
for each_entry (in games.json) check if it's in appslist <- prolly will use .startswith(each_entry) as a wildcard for appslist, to avoid version numbering and file name issues
return corresponding folders/files
</pseudocode>
should not be too much of additional work.