Jump to content
  • Advertisement

Theory GameDev Challenges - Swinging back around



Took an active break with the challenges but happily watched this last year. Pretty cool what's happening in this space on the site and curious now about the challenge fork that has recently appeared. Lots of good things happening on gamedev.net - hope to meet more new people that share the same interest. Alas, I'm in the hobby group which tends to hop me around from technology to technology. This last weekend (and into today) was nice. Minor distractions, work is done, already queued up the next major project to take it to the end of 2019 with dignity. All set, life is good. So I sit down to the youTube and catch up with the who is who and how badly are they doing it. You know...you've been around a while, you recognize what smells right off the .bat

Now, I'm not much for wordy blog entries but this must be told. Oh jeebers yes, this was a good smell. So sweet. :) 

A toy 3D triangle renderer in software presented in a 4 part series.

The code built is directed to the console but there is available an alternative hardware screen blit approach with the olcPixelGameEngine starter files making it an almost 1:1 follow along. The results are great and really punch home what is going on behind the scenes on our graphics hardware. Point transformations (object space through to screen space), screen clipping of triangles, perspective texture correction. A build up of a 3D environment from his pixel engine. I'm only to part 3 but really happy with the reinforced learning so far. My experience will be different because I refused to take the simple math by function call approach and simply overloaded operators within a couple structs as we went along. The code base is small enough to grasp the majority at once with enough speed to do some interesting future experiments. 

So here we are, new software technology in our hands. Is it punchy enough to take the role of gamedev challenge framework? 


it's got a real good shot :D (screen shot on an old i5 cpu / intel 9300 intergrated graphics)

Video Clip

I like it because it takes me back to the old days of a wolfstien like raycaster clone we were learning AI with but this is way faster. It's nice because it's so pure and not bound to a particular target machine. A start code base that can be shared between different os user types. Nothing being done behind your back, it's right there with a couple sprinkles of "actually, yes you can do it", see right here...

Thanks for breezing by.



Recommended Comments

Making a software triangle renderer is something I intend to have a go at too (I've already done some primitive raytracing and that is well worth doing if you haven't already), there are some great tutorials out there, some links I have already bookmarked:



There's also the issue of how to have fast shaders, you could have a fixed pipeline, or I recently tried a Mesa OpenGL software implementation that I believe used LLVM to compile the shaders to fast CPU code.

I believe there are actually quite a few real world use cases where a software renderer can be useful as a side path in otherwise hardware rendered games, because you avoid the whole round trip to the GPU and can query within the same frame, and the bottlenecks are different.

Share this comment

Link to comment

lol...I havn't heard Benny's voice in quite a while. He and I hung out for almost all of what he could put out on the youTube, which is not trivial. That guy has a mountain of vids.

Thank you for sharing your personal stash on this topic. It almost feels like it should be a requirement to get a software implementation under you belt to fully grasp what rendering api's are providing for you.

Agreed, a raytracer I've not played with, and probably is a disservice to myself. Thank you for the friendly tap. Lots of powerful knowledge in this corner of the playground. 

Edited by GoliathForge

Share this comment

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement
  • Advertisement
  • What is your GameDev Story?

    In 2019 we are celebrating 20 years of GameDev.net! Share your GameDev Story with us.

    (You must login to your GameDev.net account.)

  • Blog Entries

  • Similar Content

    • By prodbydakota
      Roles to Fill: 3D Animators/3D Modelers, C# Programmers , Game Designers/UI Designers, Game Sound Engineers
      We are small group with a 3-4 person crew looking for motivated individuals to join our startup game.
      The ideal participant can work from home. We welcome students and hobbyists of all ages to contribute to our project to help build, design, skin/model, or do sound engineering in this 3D game who are familiar with Unity3D.
      We are currently funding the project out of pocket meaning compensation will be rewarded to active participants in terms of revenue-share contract. Our projects involves Standard FPS Shooter Dynamics cloning that of Source Engine's Counter Strike Source and primary centered around the surfing mod and it's combat. Permanent employment is a potential opportunity here once we go live for public access within a year of testing.

      For a project comparison please refer to these clips of surf_greatriver gameplay:

      The Project will be built using Unity engine, Unity 2019.1.0b4 beta to be exact. Any contributing skills would be helpful.

      Great River is a Unity game made with Forge networking. The final product will be a standalone & polished version of the surf_greatriver map from the Counter Strike: Source Workshop. This game will be developed as a NON-PAY-TO-WIN platform and will feature improved UI, map details/ systems, and textures that will make Great River a standalone title worth playing.
      Dakota is actively seeking developers to aid in finishing this project. All active participants of development and testing will receive Custom Skins unique to the developers and play testers at time of launch. You will also be credited within the game and you may include a little message to a loved one or a blurb that will be viewable by all players on the credits scene. If your contribution is vital to the operations of the game you will also receive production credit and royalty options. If you are a fan of surf_greatriver or the Counter Strike Source Surf Mod and wish to participate, please send me an email at: mgmt@prodbydakota.com
      Current Contributors: // Dakota (Prodbydakota) - Project Lead (Ongoing) // Simon (Pixelpoint) - Dev. Consulting Work // NFMynster - Systems Dev. Work // Shelby Juno - Animation and Rendering Work //
      A fully working FPS shooter with a simple map and a main menu
      A networked weapon system with several weapons and easy flexibility
      Seperated world & view model system
      Player customization with player name and player skin, saved locally and fully networked!
      Animated & networked characters!
      Player health, respawn, spawnpoints
      HUD & UI
      Incomplete Core Tasks:
      Master server registration. This is very easy to setup with Forge though.
      NAT Punchthrough server. Forge offers a natpunch which I'm not using for this project.
      Server browser. This project is direct connect only, however Forge comes with examples of both a lobby system and a server browser.
      An actual gamemode, however everything you need for creating your own is there (A gamemode class)
      Any sounds at all
      No options menu! The game is using some post processing that you can't turn off ingame. If you computer is struggling to run this, disable it on the player's camera.
      There are few minor bugs in the project, if you find some crucial one report them to: mgmt@prodbydakota.com
      Google Docs Dev Sheet
      If you wish to see more details about the tools and processes planning to be implemented you can so here : https://docs.google.com/document/d/1DRI1SISvLvwUHpyg1LEfn5ova_G8tR3ffZ0LVthLzfA/edit?usp=sharing
    • By simco50
      I've been looking into tiled forward rendering and it's pretty much working except the performance of my compute shader is awful and I can't find out why.
      The light culling takes over 17ms on 1920x1080, thread group size of 16x16 with 512 small point lights while others get this under 1ms!
      I've mainly based myself on this page: https://www.3dgep.com/forward-plus/ the compute shader is almost identical except that I added AABB culling on top of it.
      The shader code is below:
      I've noticed when commenting the part at the end where it writes to the lightgrid and lightindexlist, the performance of the pass increases significantly although I don't understand why.
      Since the shader is mostly identical to the others, I'm wondering if the problem lies outside of the shader...
      Does someone have any guidelines to debug this?
    • By MasterReDWinD
      I am trying to move some of my C# code for a noise implementation onto a Unity HLSL compute shader.  Unfortunately some of the functions returns arrays.  I have looked at several resources in an attempt to find out how to do this but I still don't have a working solution.  I did find a similar question on here (see the bottom of this post).  In this case using `out' was suggested.  Is this the correct way to handle this?  If so what would the correct syntax be for a function which also has three parameters, such as:
      int[] CornerPoints(float x, float y, float z) In this case the returned array will be a multidimensional array.
      int[8,3] .Any pointers in the right direction would be much appreciated.
    • By badapple0028
      In DCC, we can soft select things with proper falloff in volume/viewport. I think I can do the soft selection with viewport falloff. But how is volume falloff implemented especially with lasso/poly selection mode?
      In lasso/poly selection mode, the 2D selection area in viewport is irregular polygon. Then selected objects will also in an irregular 3D space. How to do volume falloff based on this irregular 3D space to achieve soft selection?
    • By Ryokeen
      Well, just for the fun of it i started to implement a simple quadtree into a little project of mine. Just to maybe speed up rendering and have at least some sort of culling for maps as they are made as basicly one huge mesh. But then there is the situation that triangles will cross borders of the childnodes if a node has to be splitted.

      Pushing them into the parent node would be easier, but that means that there is the potential to draw more nodes than possible because of well, crossing triangles.
      Then if they would get split so that i only have to render leaf nodes, means i get quite some more triangles to render.
      As for now the quadtree will only be used for rendering so each triangle in the hughe mesh should only be present one time(to avoid possible overdraw/double rendering of triangles)
      Now what i'm asking or where i need some input is, is it better to push the triangles which are in more than one childnode into the parent node or split them at the boundary, resuling in more triangles but they will only be in leaf nodes ?
      regards Ryokeen

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!