{"id":13480406,"url":"https://github.com/id-Software/DOOM","last_synced_at":"2025-03-27T10:32:42.325Z","repository":{"id":37733345,"uuid":"3319040","full_name":"id-Software/DOOM","owner":"id-Software","description":"DOOM Open Source Release","archived":false,"fork":false,"pushed_at":"2024-05-24T13:18:59.000Z","size":149,"stargazers_count":14188,"open_issues_count":10,"forks_count":2302,"subscribers_count":412,"default_branch":"master","last_synced_at":"2024-10-29T11:21:34.769Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/id-Software.png","metadata":{"files":{"readme":"README.TXT","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.TXT","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2012-01-31T21:28:06.000Z","updated_at":"2024-10-29T11:16:31.000Z","dependencies_parsed_at":"2024-10-29T11:17:35.286Z","dependency_job_id":null,"html_url":"https://github.com/id-Software/DOOM","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/id-Software%2FDOOM","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/id-Software%2FDOOM/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/id-Software%2FDOOM/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/id-Software%2FDOOM/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/id-Software","download_url":"https://codeload.github.com/id-Software/DOOM/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222239314,"owners_count":16953914,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T17:00:38.826Z","updated_at":"2024-10-30T14:30:27.821Z","avatar_url":"https://github.com/id-Software.png","language":"C++","readme":"\nHere it is, at long last.  The DOOM source code is released for your\nnon-profit use.  You still need real DOOM data to work with this code.\nIf you don't actually own a real copy of one of the DOOMs, you should\nstill be able to find them at software stores.\n\nMany thanks to Bernd Kreimeier for taking the time to clean up the\nproject and make sure that it actually works.  Projects tends to rot if\nyou leave it alone for a few years, and it takes effort for someone to\ndeal with it again.\n\nThe bad news:  this code only compiles and runs on linux.  We couldn't\nrelease the dos code because of a copyrighted sound library we used\n(wow, was that a mistake -- I write my own sound code now), and I\nhonestly don't even know what happened to the port that microsoft did\nto windows.\n\nStill, the code is quite portable, and it should be straightforward to\nbring it up on just about any platform.\n\nI wrote this code a long, long time ago, and there are plenty of things\nthat seem downright silly in retrospect (using polar coordinates for\nclipping comes to mind), but overall it should still be a usefull base\nto experiment and build on.\n\nThe basic rendering concept -- horizontal and vertical lines of constant\nZ with fixed light shading per band was dead-on, but the implementation\ncould be improved dramatically from the original code if it were\nrevisited.  The way the rendering proceded from walls to floors to\nsprites could be collapsed into a single front-to-back walk of the bsp\ntree to collect information, then draw all the contents of a subsector\non the way back up the tree.  It requires treating floors and ceilings\nas polygons, rather than just the gaps between walls, and it requires\nclipping sprite billboards into subsector fragments, but it would be\nThe Right Thing.\n\nThe movement and line of sight checking against the lines is one of the\nbigger misses that I look back on.  It is messy code that had some\nfailure cases, and there was a vastly simpler (and faster) solution\nsitting in front of my face.  I used the BSP tree for rendering things,\nbut I didn't realize at the time that it could also be used for\nenvironment testing.  Replacing the line of sight test with a bsp line\nclip would be pretty easy.  Sweeping volumes for movement gets a bit\ntougher, and touches on many of the challenges faced in quake / quake2\nwith edge bevels on polyhedrons.\n\nSome project ideas:\n\nPort it to your favorite operating system.\n\nAdd some rendering features -- transparency, look up / down, slopes,\netc.\n\nAdd some game features -- weapons, jumping, ducking, flying, etc.\n\nCreate a packet server based internet game.\n\nCreate a client / server based internet game.\n\nDo a 3D accelerated version.  On modern hardware (fast pentium + 3DFX)\nyou probably wouldn't even need to be clever -- you could just draw the\nentire level and get reasonable speed.  With a touch of effort, it should\neasily lock at 60 fps (well, there are some issues with DOOM's 35 hz\ntimebase...).  The biggest issues would probably be the non-power of two\ntexture sizes and the walls composed of multiple textures.\n\n\nI don't have a real good guess at how many people are going to be\nplaying with this, but if significant projects are undertaken, it would\nbe cool to see a level of community cooperation.  I know that most early\nprojects are going to be rough hacks done in isolation, but I would be\nvery pleased to see a coordinated 'net release of an improved, backwards\ncompatable version of DOOM on multiple platforms next year.\n\nHave fun.\n\nJohn Carmack\n12-23-97\n\nCopyright (c) ZeniMax Media Inc.\nLicensed under the GNU General Public License 2.0.\n","funding_links":[],"categories":["Must see","C++","Table of Contents","C","First-Person games","Languages","Engines","Source code","Open Source Games"],"sub_categories":["Complete Game Sources","C","Open source DOS games"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fid-Software%2FDOOM","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fid-Software%2FDOOM","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fid-Software%2FDOOM/lists"}