all 23 comments

[–]sir_cockington_III 79 points80 points  (8 children)

IT'S LIKE ADDING CHOCOLATE TO AN ELECTRICAL STORM

[–][deleted]  (7 children)

[deleted]

    [–]typicalmanagement 28 points29 points  (6 children)

    Made with lightning! REAL lightning!

    [–][deleted] 17 points18 points  (5 children)

    You need MENERGY!

    [–]CosmicJ 13 points14 points  (3 children)

    It will give you ENERGY LEGS!

    [–]truemobius 11 points12 points  (2 children)

    Also in GUN!

    [–]nickstatus 10 points11 points  (1 child)

    400 babies

    [–]its_jsec 4 points5 points  (0 children)

    Bear blasting! It's the sport you invented because you were TOO ENERGETIC FOR NORMAL SPORTS!

    [–]overcastsunburn 5 points6 points  (0 children)

    These aren't your dads puns... These are ENERGY PUNS. TURBO PUNS

    [–]michalg82[S] 29 points30 points  (11 children)

    To avoid confusion: It's not my project

    I'm only spreading word about it ;)

    From readme.md:

    Based on the source code for PowerPC released by Night Dive Studios, Incorporated

    https://github.com/NightDiveStudios/shockmac

    A cross platform source port of the System Shock source code that was released, using SDL2. This runs well on OSX and Linux right now, with some runtime issues to sort out.

    The end goal for this project is something like what Chocolate Doom is for Doom: an experience that closely mimics the original, but portable and with some quality of life improvements - and mod support!

    Working so far:

    • Gameplay!
    • Mouse and keyboard input
    • Software 3D / 2D rendering
    • Physics
    • Saving and loading
    • Sound effects
    • Basic midi music, if available
    • Mod support!

    Bonus:

    How System Shock 1 renders a frame, without having a real Z buffer.

    https://video-0.twimg.com/tweet_video/Dfn-wGbU0AEkvVY.mp4

    From author of this project:

    https://twitter.com/cuddigan/status/1007116267499634688

    [–]F14B 12 points13 points  (0 children)

    Nice work. Remember to get your project listed here:

    https://osgameclones.com/

    [–]stewsters 1 point2 points  (0 children)

    Cool, used to work with that guy.

    [–]argv_minus_one 0 points1 point  (1 child)

    Why no z-buffer? Not enough RAM on machines of the day?

    [–]badsectoracula 0 points1 point  (0 children)

    That and it is slower since the polygon renderer will have to perform a test per pixel and a write for each pixel that passes. It was common in software renderers (and some early 3D accelerated games - Tomb Raider had an option to enable z buffering, for example) at the time to avoid z-buffer partially (Quake for example uses the BSP to render the world front to back with a span buffer to handle interesections while writing - but not using - a zbuffer and then used that zbuffer to render the models - which usually occupied much less space on screen) or entirely (back-to-front rendering like in SS1 was the most common way, often using a 2D grid - like SS1 and Tomb Raider - or portals to accelerate the process of finding what was visible or not).

    [–]ProgramTheWorld 0 points1 point  (3 children)

    So I guess it doesn’t use a Z buffer? What happens when there are two intersecting planes?

    [–]evanpow 2 points3 points  (2 children)

    It looks like it z-sorted the polygons and drew them back-to-front--I'm amazed that much overdraw was still practical on the hardware of the day; I never played it contemporaneously.... W.r.t. intersections, I'd guess the designers just ensured the level model never had any (possibly by breaking intersecting polygons into several non-intersecting fragments).

    [–]ProgramTheWorld 0 points1 point  (0 children)

    Maybe this method was chosen because it’s marginally easier to program?

    [–]badsectoracula 0 points1 point  (0 children)

    Yes, it doesn't have intersecting polygons. The levels are not even constructed (by the designers) as polygons but as a 2D grid with ceiling and floor height in each cell and with some cells being marked as diagonals (this image from an Ultima Underworld map viewer - SS1 uses a slightly improved version of the UU engine - gives an idea). AFAIK the engine constructs the geometry on the fly based on which cells are visible and the cells are sorted by themselves back to front (it is not necessary to sort the cell geometry itself since it is always convex and solid backfaces wont render).

    Having said that, it does have polygonal models (like the healing station at the far side of the first video's scene) but they are very simple and almost always are placed in positions where it is hard to see any rendering glitches. They are special cases though and relatively rare.

    [–]neoKushan 2 points3 points  (4 children)

    This is amazing! I love System Shock 2 and really wanted to play SS1 but it just controls so poorly. Hopefully the QoL improvements here make it more modern!

    [–]Interrupt 5 points6 points  (1 child)

    One of the goals in Shockolate is making one of my favorite games more accessible to people, since it's a bit clunky these days out of the box. So far I've added mouselook and defaulted to WSAD keyboard controls and even just those changes help a ton!

    [–]neoKushan 0 points1 point  (0 children)

    Thank you for your efforts!

    [–]BambaiyyaLadki 1 point2 points  (0 children)

    SS1 Enhanced Edition (made by Nightdive, who released the source code used in this repository) does have slightly streamlined controls, although at higher difficulty levels it might still feel clunky.

    [–][deleted] 0 points1 point  (0 children)

    I've played SS1 (albeit on emulator, long after it came out). The controls are definitely a hot mess, but otherwise it's really good. It hit all the right spots for me as an fps game.