Wolf3D | Modern OpenGL clone of Wolfenstein | Game Engine library

 by   goodpaul6 C Version: Current License: No License

kandi X-RAY | Wolf3D Summary

kandi X-RAY | Wolf3D Summary

Wolf3D is a C library typically used in Gaming, Game Engine applications. Wolf3D has no bugs, it has no vulnerabilities and it has low support. You can download it from GitHub.

Modern OpenGL clone of Wolfenstein 3D (1992).
Support
    Quality
      Security
        License
          Reuse

            kandi-support Support

              Wolf3D has a low active ecosystem.
              It has 7 star(s) with 0 fork(s). There are 1 watchers for this library.
              OutlinedDot
              It had no major release in the last 6 months.
              Wolf3D has no issues reported. There are no pull requests.
              It has a neutral sentiment in the developer community.
              The latest version of Wolf3D is current.

            kandi-Quality Quality

              Wolf3D has 0 bugs and 0 code smells.

            kandi-Security Security

              Wolf3D has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
              Wolf3D code analysis shows 0 unresolved vulnerabilities.
              There are 0 security hotspots that need review.

            kandi-License License

              Wolf3D does not have a standard license declared.
              Check the repository for any license declaration and review the terms closely.
              OutlinedDot
              Without a license, all rights are reserved, and you cannot use the library in your applications.

            kandi-Reuse Reuse

              Wolf3D releases are not available. You will need to build from source code and install.
              It has 437 lines of code, 42 functions and 3 files.
              It has medium code complexity. Code complexity directly impacts maintainability of the code.

            Top functions reviewed by kandi - BETA

            kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
            Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of Wolf3D
            Get all kandi verified functions for this library.

            Wolf3D Key Features

            No Key Features are available at this moment for Wolf3D.

            Wolf3D Examples and Code Snippets

            No Code Snippets are available at this moment for Wolf3D.

            Community Discussions

            QUESTION

            Algorithm to fill arbitrary marked/selected tiles on a square grid with the smallest number of rectangles?
            Asked 2022-Jan-12 at 15:58

            What I am asking here is an algorithm question. I'm not asking for specifics of how to do it in the programming language I'm working in or with the framework and libraries I'm currently using. I want to know how to do this in principle.

            As a hobby, I am working on an open source virtual reality remake of the 1992 first-person shooter game Wolfenstein 3D. My program will support classic mods and map packs for WOLF3D made in the original format from the 90s. This means that my program will not know in advance what the maps are going to be. They are loaded in at runtime from user provided files.

            A Wolfenstein 3D map is a 2D square grid of normally 64x64 tiles. let's assume I have a 2D array of bools which return true if a particular tile can be traversed by the player and false if the tile will never be traversable no matter what happens in the game.

            I want to generate rectangular collision objects for a modern game engine which will prevent collisions into non traversable tiles on the map. Right now, I have a small collision object on each surface of each wall tile with a traversible tile next to it and that is very inefficient because it makes way more collision objects than necessary. What I should have instead is a smaller number of large rectangles which fill all of the squares on the grid where that 2D array I mentioned has a false value to indicate non-traversible.

            When I search for any algorithms or research that might have been done for problems similar to this, I find lots of information about rectangle packing for the purposes of making texture atlases for games, which packs rectangles into a square, but I haven't found anything that tries to pack the smallest number of rectangles into an arbitrary set of selected / marked square tiles.

            The naive approach which occurs to me is to first make 64 rectangles representing 64 rows and then chop out whatever squares are traversible. but I suspect that there's got to be an algorithm which can do better, meaning that it can fill the same spaces with a smaller number of rectangles. Maybe something that starts with my naive approach and then checks each rectangle for adjacent rectangles which it could merge with? But I'm not sure how far to take that approach or if it will even truly reduce the number of rectangles.

            The result doesn't have to be perfect. I am just fishing here to see if anyone has any magic tricks that could take me even a little bit beyond the naive approach.

            Has anyone done this before? What is it called? Just knowing what some of the vocabulary words I would need to even talk about this are would help. Thanks!

            (later edit)

            Here is some sample input as comma-separated values. The 1s represent the area that must be filled with the rectangles while the 0s represent the area that should not be filled with the rectangles.

            I expect that the result would be a list of sets of 4 integers where each set represents a rectangle like this:

            1. First integer would be the x coordinate of the left/western edge of the rectangle.
            2. Second integer would be the y coordinate of the top/northern edge of the rectangle.
            3. Third integer would be the width of the rectangle.
            4. Fourth integer would be the depth of the rectangle.

            My program is in C# but I'm sure I can translate anything in a normal mainstream general purpose programming language or psuedocode.

            ...

            ANSWER

            Answered 2022-Jan-12 at 14:46
            Mark all tiles as not visited
            For each tile:
                skip if the tile is not a top-left corner or was visited before
                # now, the tile is a top-left corner
                expand right until top-right corner is found
                expand down
                save the rectangle
                mark all tiles in the rectangle as visited
            

            Source https://stackoverflow.com/questions/70674385

            Community Discussions, Code Snippets contain sources that include Stack Exchange Network

            Vulnerabilities

            No vulnerabilities reported

            Install Wolf3D

            You can download it from GitHub.

            Support

            For any new features, suggestions and bugs create an issue on GitHub. If you have any questions check and ask questions on community page Stack Overflow .
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries
            CLONE
          • HTTPS

            https://github.com/goodpaul6/Wolf3D.git

          • CLI

            gh repo clone goodpaul6/Wolf3D

          • sshUrl

            git@github.com:goodpaul6/Wolf3D.git

          • Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link

            Explore Related Topics

            Consider Popular Game Engine Libraries

            godot

            by godotengine

            phaser

            by photonstorm

            libgdx

            by libgdx

            aseprite

            by aseprite

            Babylon.js

            by BabylonJS

            Try Top Libraries by goodpaul6

            Tiny

            by goodpaul6C

            SpriteExtractor

            by goodpaul6C

            mint-lang

            by goodpaul6C

            generic

            by goodpaul6C

            ssh-sync

            by goodpaul6Python