11 ms·
Retro game engine for developers that enjoy creating games like it's 1997
- jdmoreira 8y agoJust a few days ago I was searching on how to implement a software renderer. I remember enjoying the software rendered of quake much more than the opengl version. Great project!
- openbasic 8y agoIf you dig software rendering: https://github.com/ssloy/tinyrenderer https://github.com/ssloy/tinyrenderer https://www.youtube.com/watch?v=HQYsFshbkYw https://www.youtube.com/watch?v=HQYsFshbkYw https://www.youtube.com/watch?v=Y_vvC2G7vRo&list=PLEETnX-uPtBUbVOok816vTl1K9vV1GgH5 https://www.youtube.com/watch?v=Y_vvC2G7vRo&list=PLEETnX-uPt... https://www.amazon.com/Tricks-Programming-Gurus-Advanced-Graphics-Rasterization/dp/0672318350 https://www.amazon.com/Tricks-Programming-Gurus-Advanced-Gra...
- coffeeaddicted 8y agoIrrlicht still has 2 software renderers. A simpler one without clipping and a more complex one called burnings renderer.
- claudiulodro 8y agoSuper cool. I always loved that mid-90s 3D look. I'm familiar with how the GPL applies to regular system/web software, but I haven't had experience with it and game engines before. Since this engine is GPL-licensed it seems like any game built with this engine would then also need to be GPL-licensed, correct?
- klodolph 8y ago> Since this engine is GPL-licensed it seems like any game built with this engine would then also need to be GPL-licensed, correct? Yes, mostly correct. In order to comply with the GPL, and distribute game binaries, you need to make the source to any game you make with it available under the same terms. Technically that does not mean that you have to distribute the game under the GPL, but in practice that's how you would comply with the engine's license.
- tracker1 8y agoCould just release the game engine binary with a separate loader for assets and license check... Utilizing steam for distribution and in game features could help too.
- klodolph 8y agoYou can't link a GPL engine against the Steam library (Steamworks SDK is proprietary) and then distribute binaries without violating the GPL. It's also not assets that are the problem, it's the game-specific code.
- tracker1 8y agoYou could separate the rendering logic from the game logic and create messaging channels for them... Also, the game specific code is rarely worth anything without the assets... that's why Id has released these codebases, so that people can learn/adapt... the assets retain copyright, etc. Also, you can separate out the game runtime from launcher parts... the launcher can contain other communication channels and be responsible for delivering assets. As I said, it isn't even about creating a perfect abstraction, just enough to minimize the effect of piracy.
- klodolph 8y agoI think when engineers answer these questions it's easy to get bogged down in issues like whether something is a single process linked together or whether you have multiple processes communicating with one another. I don't think these arguments have serious legal merit. The question at hand is whether the game you are making is a work based on the engine. If true, to comply with the GPL you must release source. Establishing communication channels so that you can put your game logic and the engine in separate processes are not a silver bullet, they don't change the question of whether your game is a work based on the engine, they mostly change the mechanics of how your game is a work based on the engine. There are a lot of difficulties in making this argument. The court is probably not interested in hearing about whether different components are running in the same process and linked together or whether they are running in separate processes and communicating through IPC. At best, I'd say that you're running the risk of an expensive court case, and at worse I think you stand a good chance of losing it, not having enough money to fight it (because the legal arguments are quite sophisticated), and suffering from things like DMCA takedown notices in the meantime. I think the trap that software engineers fall into, far too often, is that we try to answer legal questions using the same techniques we use to solve technical questions. The question of, "Is this an executable?" or "Does this use dynamic linking?" is something you can answer based on your definitions of what an executable is. However, legal arguments don't happen in such a mechanical fashion. Contracts and laws are written in prose, not code, and they are interpreted by humans which are basically trying to do understand some combination of "what did the author mean?" and "how would people generally interpret this sentence?"
- misterdoubt 8y agoOoh, I fondly remember late '90s nights tinkering in QERadiant. These days I'd be able to tinker way harder than just editing levels.
- openbasic 8y agohttps://github.com/kduske/TrenchBroom https://github.com/kduske/TrenchBroom is the new cool
- pooppaint 8y agoIs allegro still maintained, I thought it was as of a few years ago. You can develop like its 1997, or 1987.
- mdavidn 8y agoFactorio, a recent relatively popular indie game, was developed on Allegro.
- folkhack 8y agoThey're moving off of it last I heard. Sounds like it's a legacy solution at this point. https://www.factorio.com/blog/post/fff-230 https://www.factorio.com/blog/post/fff-230
- mikepurvis 8y agoHuh, I wonder what that'll mean for cross-platform compatibility. As they say in the post, Allegro supports a lot of platforms, whereas if they end up just targeting DirectX 11, that pretty much locks out everyone other than Windows and Xbox, doesn't it?
- deleted 8y ago[deleted]
- danielvf 8y agoFYI, Factorio still runs just fine on OS X.
- zakkeg 8y agoThey're getting it working on OpenGL first. "We are using OpenGL 3.2 for now, but DirectX 11 support is definitely coming before we release it."
- folkhack 8y agoI believe they support Linux as a first-class citizen, even with removing Allegro! I've had VERY good luck with Factorio running through Steam, on Debian Linux (both 8 and 9). I have also ran it on Mac OSX and Windows 7 without any issue. That game is so rock-solid as far as stability/system support that I would literally buy it again out of general principal =)
- zokier 8y ago> Removal of OpenGL Huh. I suppose CPUs are fast and all, but still seems odd to replace perfectly good OpenGL renderer with SW rendering.
- tracker1 8y agoAgreed... I'm a little surprised they wouldn't adapt to work/build to wasm+webgl target. It seems to me that could make a pretty good cross platform base.
- openbasic 8y agoHaving no OpenGL makes an HTML5 port even easier.
- tracker1 8y agoWouldn't opengl be closer to webgl?
- openbasic 8y agoEmscripten has an SDL implementation so you can just SDL_BlitSurface inside a <canvas>.
- tracker1 8y agoWhat about the performance? Not that it's going to be huge on some modern hardware, but thinking a 4-5yo tablet or raspberry pi 2-3 level support. Not that WebGL is all that much to write home about vs. native...
- mumphster 8y agoHow so? emscripten already supports WebGL
- badsectoracula 8y agoEmscripten has an OpenGL 1.x implementation and Quake 2 uses pretty much OpenGL 1.1. Some years ago i ported my engine that has a GL1.x-only path to Emscripten and had an SDL backend (i removed it since then) and it took just a couple of hours to "port" (the two main problems i had were that i was doing some unaligned pointer accesses - casting a byte array to a float array to read vertex data - that Emscripten didn't knew how to handle so i wrote a slower path for Emscripten and that the OpenGL 1.x implementation wasn't that great and i had to write some workarounds).
- Jaruzel 8y agoThis is great. I remember back to the late 90s when I was busy hacking gamex86.dll to customise my Quake2 Death-matches with my friends. One thing I wonder about this release is though - the Original Quake2 engine had a very fixed palette and also some odd lighting that always skewed the palette to a brown tint - does qengine fix this? Also... Bonus... Some Quake2 maps, that I made way back: http://www.jaruzel.com/blog/my-quake2-maps http://www.jaruzel.com/blog/my-quake2-maps
- openbasic 8y agoFrom my perspective, that odd lighting and tint is part of the aesthetic that makes it great. You can learn more about how the renderer works here: http://fabiensanglard.net/quake2/quake2_software_renderer.php http://fabiensanglard.net/quake2/quake2_software_renderer.ph... You can create your own palette using the included pcx2pal: https://github.com/klaussilveira/qengine/blob/master/src/tools/pcx2pal/pcx2pal.c https://github.com/klaussilveira/qengine/blob/master/src/too... After that, you might want to generate the colormap: https://github.com/klaussilveira/qengine/blob/master/src/tools/colormap/colormap.c https://github.com/klaussilveira/qengine/blob/master/src/too... If you enjoy the code of Q2, but also would like more modern rendering, I highly recommend quake2xp from Barnes: https://www.moddb.com/mods/quake-2-xp https://www.moddb.com/mods/quake-2-xp Yamagi is the gold standard for all Q2 engines: https://github.com/yquake2/yquake2 https://github.com/yquake2/yquake2 And some art help: http://maps.rcmd.org/tutorials/q2_palette_textures/ http://maps.rcmd.org/tutorials/q2_palette_textures/
- openbasic 8y agoCool maps, btw. :)
- farwind 8y agoI think I remember playing these maps! (or else confusing my shades of grey) I'll need to boot up that computer and see if they're on there. I can't find the website I used to download maps and skins from. It must be gone by now.
- lpcvoid 8y agoI recall from somewhere that the team behind Carmack (Tom Hall, Romero, etc) chose the brown palette since it looked best within the theme, given the color constraints. I have no source, sadly.
- jenscow 8y agoQuake 2 is retro? Shit, I'm old.
- dixego 8y agoPS2 and GameCube are retro at this point.
- robbrit 8y agoPeople in their early 20's don't even know Half-Life (released at the end of 1998, over 20 years ago now), let alone Quake. We're definitely getting old!
- Apocryphon 8y agoBlame Valve's lack of interest in maintaining their franchises for that one.
- robbrit 8y agoTo be fair if I was in their shoes and had the cash cow that is Steam, I probably wouldn't care too much about maintaining franchises either. Games are expensive to build and profit isn't guaranteed; a distribution platform that is being used by everybody has much better economics.
- hnbroseph 8y agoi lowkey kinda feel that the pervasive gamer hype about half-life 3 (for example the "hl3 confirmed" meme was extremely pervasive) made valve feel like it would be impossible to match the hype, and any flaw would be hyper focused. maybe now that it's faded a bit there won't be as much pressure. or i could be wrong about that mattering.
- empyrical 8y agoThe book "The Final Hours of Portal 2" has a section where they explained how much pressure they felt to try and have Portal 2 live up to Portal 1. Even effectively shutting down development of of other games for 2 months so the whole company could focus on prototyping experiments for new gameplay concepts that could be incorporated into Portal 2. I would not be surprised of the pressure they feel for Half-Life 3 to be great is an order of magnitude greater than what they felt with Portal 2
- git-pull 8y agoThis is a cool project! - CMake, yay! These make generating build files for a variety of platforms (even Windows) a breeze. It also works with code completion stuff (CLion IDE, KDevelop both have CMake-based projects) - I like how it splits stuff up as well (https://github.com/klaussilveira/qengine/tree/master/src/game https://github.com/klaussilveira/qengine/tree/master/src/gam...). - As for vendorizing SDL2, there is an opportunity for optimization: The shared libraries and header files can be scanned through CMake scripts. Example: https://github.com/tcbrindle/sdl2-cmake-scripts https://github.com/tcbrindle/sdl2-cmake-scripts. - I see the .clang-format file, nice! (This is for clang-format: https://clang.llvm.org/docs/ClangFormat.html https://clang.llvm.org/docs/ClangFormat.html) Unfortunately, license is going to be a real barrier to most game developers. The ironic thing is this engine includes SDL 2 which prides itself on being on a permissive license. (https://youtu.be/MeMPCSqQ-34?t=405 https://youtu.be/MeMPCSqQ-34?t=405, 6:40 to 7:30) If it's the intention to create an open source library to be helpful as possible to developers. If it's the intention to have a library just for use in the GPL ecosystem of games (which isn't bad: OpenTTD is GPL!) then this is okay. The reason why is a private game developer want to retain control of their intellectual property, even throughout the prototyping phase. As for open sourcing, I'd approach it in a different way: I'd release reusable components under a permissive license (e.g. MIT, BSD, ISC, zlib, etc.) and keep any creative work product code/source files private. Similar SDL2 framework for 2D games (I made some CMake contributions a while back): https://oxygine.org/ https://oxygine.org/
- openbasic 8y agoThe license can be a problem for some studios, specially ones with uncomfortable contracts with publishers. If you are in that situation, I highly recommend writing a LuaJIT integration layer. The game code is very well separated from the engine, and qengine already removes a lot of non-generic game code from Q2. So all you have to do is delete a little bit more, write some glue code to tie in Lua, and you can write the entire game logic in a separate codebase, with a separate license. Also, you get moddability.
- ufo 8y agoI think using Lua scripting like that still counts as "dynamic linking" from the point of view of the GPL. https://www.gnu.org/licenses/gpl-faq.en.html#GPLPlugins https://www.gnu.org/licenses/gpl-faq.en.html#GPLPlugins
- madrox 8y agoThis is really cool, and I can’t believe I’ve lived long enough to see Quake 2 be called “retro.” I’ll likely live long enough to see the Unreal Engine of today called retro. I’ve never thought of this before, and it’s wild.
- openbasic 8y agoI wish they released UT99 under the GPL.
- rms25 8y agoWould be really nice, id has been cool about this (at least while Carmack was around). Epic MegaGames could do a gpl UT99 release, lol specially since fortnite is making bank for them right now. Doesn't seem like a big loss
- gdubs 8y agoCame here to say the same; it’s like the first time I heard Nirvana on a “classic rock” station.
- KC8ZKF 8y ago“Nevermind” is longer ago from today than “Rubber Soul” was from “Nevermind.” Time is cruel.
- cmrdporcupine 8y agoHoly crap you just made me feel completely ancient. I had never made that realization before. Is this how my parents felt in the 80s?
- Moru 8y agoOfcourse XKCD has it's own category for you to read: https://www.explainxkcd.com/wiki/index.php/Category:Comics_to_make_one_feel_old https://www.explainxkcd.com/wiki/index.php/Category:Comics_t...
- marvin 8y agoWas anyone here at HN into Dark Forces II / Jedi Knight back in the day? The retro graphics of this post made me a bit nostalgic. The in-game scripting in Jedi Knight was my first exposure to software, and the modding community at Massassi was an incredibly creative and lively place. The poor checksums on game assets in Jedi Knight, along with early multiplayer on MSN Gaming Zone made the whole gaming community an adventure. You could never be sure what kind of shennanigans you encountered, with people having all sorts of weird gameplay hacks.
- saberworks 8y agoHello, you could say that. I love JK and I played the thing with the software renderer for years because my s3 virge card wouldn't render the game correctly. My son teases me these days "Jedi Knight sucks, dad!" when he catches me working on the site (this is Brian from Massassi; it's sort of still around).
- asark 8y ago> this is Brian from Massassi Oh man, thanks so much. That site's awesome. Jedi Knight's one of only three online shooters I ever played much of (Wolfenstein: Enemy Territory and one of the Elite Force games, I forget which, being the others) and the only one I ever got good enough at to be accused of "hacking" at least a couple times a session (never, ever did). It has a special place in my heart. Thank you for your work in the community.
- Twirrim 8y ago> Wolfenstein: Enemy Territory I sunk so much time in W:ET, got to a pretty good level with it, until everyone figured out the wallhacks, and every game became about trying to nail that perfect jump. For whatever reason, no matter how much time I sunk in to those wallhack training maps I could never get the knack of it, which meant I could no longer be where I needed to be to defend the base.
- marvin 8y agoHaha, wow, the one and only! Really cool to see you here on HN 16 years later, this is the kind of response I was hoping for :D Thanks so much for all the effort you've put into Massassi over the years. I had a lot of fun in your community, learned a lot and also got a great introduction to practical computer software. It might have been a critical part of my career choice later on. My nick was Gandalv the Gray at the time, just a random 15-year-old kid with recent internet access and lots of excitement for what was definitely for me, and probably for many others, a very novel way of interacting with others (online). Jedi Knight & the community at Massassi was an important part of staying sane through middle school for me, when there were no other people around me with any sort of scientific or technical interest. I don't think I've realized until I thought about it right now, but being able to interact with smart and creative people online back then was actually a very big deal for me. I think I really wanted something bigger and more interesting than my random middle school, most of the people there had completely different interests. It would have been much more lonely if it wasn't for the online interaction on the side; it was definitely the right community at the right time for me. It's also very cool to have been present during an early period in online gaming. When things were much more chaotic, and everything was being explored for the first time. Thanks again, and take care :)
- sneakernets 8y agoThis needs true-color rendering with colored lighting at the very least. It's not fun when everything is grey/brown pixel smudge.
- openbasic 8y agoThere's two other cool engines with a software renderer that support colored lighting: http://super8.qbism.com/ http://super8.qbism.com/ https://github.com/leilei-/Engoo https://github.com/leilei-/Engoo Both are Q1 though. However, the gray-ish/brown-ish look is entirely dependent on the color palette that you chose to use in your game. You have 256 colors to choose from, and with the 256x320 colormap, you get 64 shades of each.
- sneakernets 8y agoEven GZDoom (A Doom port) has software color lighting now, so I'm shocked this doesn't have it, that's all. And engoo is very good; I was one of its beta testers!
- openbasic 8y agoPRs are welcome! :D
- crushcrashcrush 8y agoI know this will probably get buried here, but like - I want to try this. I was a huge fan of Quake 1 and 2. How the hell do I get started? (Note: I'm not a programmer, I'm a marketer. I know just enough PHP/JS to be stupidly dangerous.)
- lloeki 8y agoEven for all the hours I poured into the MP part of Q2/4 and Q3 I could just not get into the theme/mood/lore of those games. Q1 on the other hand... played the original and extensions back to back many times, and creatively tinkering with the editor to the limits of the engine, as well a hacking terrible things in QuakeC. Although more limited, QuakeC was so much more approachable than the later "real" C++ stuff, and incredible fun to tinker with!
- zokier 8y agoGet started at making games? I feel like there might be easier paths out there these days other than relying on 20 year old engine.
- openbasic 8y agoI think the easiest way to get started is mapping. This is a very cool map editor for Q1 and Q2: https://github.com/kduske/TrenchBroom https://github.com/kduske/TrenchBroom There's plenty of good content here: http://forum.tastyspleen.net/quake/index.php?topic=21859.0 http://forum.tastyspleen.net/quake/index.php?topic=21859.0 http://maps.rcmd.org/tutorials/ http://maps.rcmd.org/tutorials/ Map compiling and texture tools are included in the engine code: https://github.com/klaussilveira/qengine/tree/master/src/tools https://github.com/klaussilveira/qengine/tree/master/src/too... The Quake community is awesome: https://quakewiki.org/wiki/Mapping_tutorials https://quakewiki.org/wiki/Mapping_tutorials https://www.quaddicted.com/forum/ https://www.quaddicted.com/forum/ http://www.celephais.net/board/forum.php http://www.celephais.net/board/forum.php
- crushcrashcrush 8y agoThank you for this!!!
- pvorb 8y agoWith only two commits, which are several months old, this project doesn't look very healthy.
- charliebrownau 8y agoWhy not just use GODOT https://godotengine.org/ https://godotengine.org/ * Use OpenGL 3.x or OpenGL 4.x * SDL2 * OpenAL * Client-Server * 8 player offline LAN support * Split screen coop * 8 player coop online vs bots
- charliebrownau 8y agoWTF has this quake engine REMOVED OpenGL , thats not like 1997, that IS more like 2007
- ilaksh 8y agoIf you want something more general purpose that can load lots of different 3d formats including Quake 3 maps, take a look at Irrlicht.
- eukara 8y agoThe repo is basically Quake II's software-renderer and game-logic module merged into the engine binary. Yamagi Quake II ships with an additional OpenGL 1.3 and 3.X renderer which I'm sure could be ported over if SW was undesired. While it's something cool to work with Quake II, its net-protocol has its downsides and I'd encourage anyone replace it with QuakeWorlds' networking as you'll run at a locked 10 Hz with the clients interpolating between the frames otherwise. This was done for easier handling of animations in single-player entities, but was regretted later (according to JohnC's own .plan files). Quake 1 is nicer to work with in that regard. Also get used to wobbly model animations with the MD2 model-format as the precision of the vertex-animated models is very poor :) It's also interesting to note that Carmack considered using a 16-bit MMX-powered SW renderer for QuakeWorld/Quake II (making it real cutting edge in 1997), but considering the global 8-bit palette was already in place, it would have resulted in a loss of precision of already paletted textures so it was decided against and they did it the old way.
- paradoxparalax 8y ago1997 was exactly the Year when the game Myth The Fallen Lords[1] was released. 'til today I think is the best game ever made. Please if there is anyone who works for Bungie or whatever company owns this abandoned game, whose community have worked hard for years to keep alive, without any help from the Owner, even reverse-engineered the server, because they prefer to keep the game dead and it's tomb abandoned then release the servers code, Please guys just Open Myth already, It's been 20 years! It is considered "retro" now, did you read that headline? The community must still be alive, even. seems that there is still a multiplayer server running. And it is a damn good multiplayer game to play even today, with very good chat interface for team communication. Maybe the best I ever saw in a game. Imagine what was this for a youngster in 97 to hear the sound of the 3.6 speed Dialed Internet Conection, after a long minute of making weird sounds, finally makes the rrrrr sound that you knew it means you are on the Internet and can Play this unbelievable thing...back then it was jaw-dropping. 1- https://en.wikipedia.org/wiki/Myth:_The_Fallen_Lords https://en.wikipedia.org/wiki/Myth:_The_Fallen_Lords
- a_t48 8y agoYou're barking up the wrong tree with Bungie - you need to contact 2K Games...and good luck on that. I know some people who have tried, both with Myth and with Oni.
- paradoxparalax 8y agoOk , thanks for that information, sincerely. Let's find some friendly agent to assume control of this 2K company then. Thank you. Actually, when there is Unity3D around, what is the point of them keeping it closed. They could still keep the Movie and Art rights, if someday Hollywood wants to make a movie of it or whatever dream they have of milking it somehow in the future. They might very well loose the value of the Art and Story itself when someone makes a similar Unity3D game with a passable Art and Story that buries their value, and now it buries for real. Can't understand what is the point of their reasoning keeping it frozen.
- wjnc 8y ago
- fit2rule 8y agoAnd for those who'd prefer it were 1983 and we had the tooling then, that we have now, there is 8-bit Dude's engine, 8-bit unity: http://8bit-unity.com/?page_id=121 http://8bit-unity.com/?page_id=121 .. which is also quite intriguing, for those of us with a bent towards the 8-bit aesthetic...
- mitchtbaum 8y agoAnyone else remember Silent Death Online? https://www.youtube.com/watch?v=3BvgxDCbZxE https://www.youtube.com/watch?v=3BvgxDCbZxE Hopefully one day it'll live on in another game that would do for others what it did for me. I even have some notes scoping it out.. Just roughly speaking, maybe something something like https://github.com/waterson/purescript-asteroids https://github.com/waterson/purescript-asteroids and https://github.com/hdgarrood/multipac https://github.com/hdgarrood/multipac together ..But who knows what game programming might look like soon.
- gutomaia 8y ago\o/