@Risky I just came across this on reddit
Thanks for the article, just skimmed through it, but bookmarked for further deep reading. Sounds interesting, even Sheryl of Meta, ex Google, struggled with these feelings and she’s on top.
One thing I’m finding so far is it helps for finding workarounds to problems.
I have a transparent windowing system which has been plagued by anti-aliasing artifacts I had begun trying to solve through mipmaps. Unfortunately this ended up causing problems with transparency and I learned framebuffer objects cannot have mips set so my idea of dynamically mipmappinig the buffers in the final renderpass wasn’t going to work. Because your you beaut recursive framebuffer within a framebuffer approach reduces you to no anti-aliasing thanks to lack of mipmaps.
Fortunately I started immediately searching for a solution and I have several to consider this morning. One of them was using a sequence of blitimage and pipeline barrier calls to eventually do post mipmapping by constructing the image without mipmaps then copying the buffer to a mipped image using linear blit and then generating mips. Of course that would be a tradeoff in frame rate so if I can find a solution that lets me avoid the render pass at all, even better! Its still passably efficient if image transitions are handled properly.
Edited to add: One observation I’ve made is that recon on this sub is very specific in nature. I think @James recently mentioned imposter syndrome with regard to coding. What I can distinguish having run this for some time is the difference between the mindset it creates – the type of logical reasoned thinking and technical focus – and the outcomes. The outcomes are dependent on how well you can manage debugging your program, and so recon on this one ends up being more severe when you’re dealing with unfamiliar subject matter, less severe when you can develop a plan which removes the uncertainty from your job.
In my runs of this sub, it was rare to doubt my ability explicitly (imposter syndrome) but common to be surprised or puzzled when intractable problems require more rigor for resolution, because the mindset of being a super-programmer conflicted with the skill development necessary to resolve harder and harder problems. So the sub in a way does push you more than a little gently towards developing a better toolset for debugging to avoid recon.
I hope this makes sense and I’d love to hear other peoples perspectives on how this one has affected your process when resolving bugs.
Had the insight on this one while experiencing a long period of nothing out of the ordinary, other than the last few days of hellish debugging, of realising tonight that as I joked to my housemate “I haven’t been taking my medicine”. The ALCAR supplements, my other aminos and testosterone boosters, and all the other supplements I hadn’t been taking. Been playing this level on hard setting
Resolving to use those more consistently over the next couple of weeks while I round out the first development cycle.
Definitely remember to take your supps with this one… it helps especially if the debug cycle is problematic
@SaintSovereign Can I run IG solo and still become a successful highly paid programmer? Maybe sooner?
That’s the entire point of IG. So yeah. Should work
I want to start learning Python. What could be the best book for learning Python for beginner who is new to programming?
An easy to understand book which a beginner can understand and start his journey as a programmer.
Guys! Please suggest if you have some good recommendations.
Thanks! I will enroll in this course. But I want to start with a book. If you can recommend an easy to understand book for it then also give some suggestion.
I know you said book, but just an alternate perspective here. You can read about variables and for loops and python modules etc until you’re blue in the face, and it isn’t going to do a hell of a lot towards you becoming a great programmer. The best tool-set out there isn’t a book or a Youtube course or Udemy, but immersion.
Dr Chuck’s course (13 hours 40 minutes on freeCodeCamp on Youtube) is one I can recommend, mainly because this is a guy that gets it. His interview with David Bombal (here) gives a good idea of his perspective from teaching Python at a university and the shortcomings of the traditional approaches.
There are also interactive code playgrounds (like this one) which can be great for trying out new things if you don’t have an REPL set up yet. I’d suggest looking at anaconda, or miniconda, or one of the various data analysis bundles if thats your bag; there’s also Jupyter Notebook which comes with that (assuming its still called Jupyter).
Just get in and get your hands dirty, its the only real way to become familiar with your language or languages of choice. You need to be familiar enough with a language to be able to think in it, just like a human language. I will often talk to myself when working on my 3D windowing system and say “soo, we want an and mute star engine mute here, and the callback needs a type of T…”. Programming is like learning about a new girlfriend and her likes and dislikes etc. Once you know the ground rules and you get into a routine, and can think in the correct patterns, the rest is just up to your inspiration.
I’ve seen a lot of good material on there. They cover a number of different languages and topics. Theres a lot of Python, but also Rust and Go and other popular ones.
It’s not the only one for material like this, there are plenty of dev logs on Youtube, I started having them pop up for me and you would not believe the number of indie developers out there trying to build their own voxel rendering engine so they can be the next Minecraft style innovator. Some really good ones with lots of personality like Tantan whose Rust-fu from what I’ve seen is pretty full-on.
But yeah, theres a lot of nuggets there that get skipped over because of their insane length (or the reverse), like an entire series on Blockhain and working with that in Python.
What are your recommendations for learning C# for game design?
Has anyone run this with Limitless yet? Could have a very interesting result. Curious on what those results would be too considering a big part of tech is learning.
From Fire when I asked about this for anyone curious:
If you desire general development of your cognitive abilities as well, then Limitless is good to add to Index Gate: UPX. Furthermore, adding Limitless would strengthen the cognitive abilities part of the stack and add new aspects to it.
There’s a fairly decent Python book called “Python Crash Course”. I do like Dr Chuck’s videos the best though
That’s an interesting question, and I’d break it down a bit further.
- Why C# specifically?
- Are we talking simple 2D stuff or full on “lets rewrite World of Warcraft” stuff?
- What topics to cover in different scenarios.
It’s also one I can’t speak with a lot of authority on; while I used to program in C# back in 2011-2014 and a little in 2020 before thinking better of it, the language has evolved a hell of a lot since I used it for writing Windows Presentation Foundation style apps in a mobile carrier’s call center (let the program write your Excel sheets for you kinda stuff), or experimenting with Unity.
You’ll see if you do any cursory Googling on the topic that there are endless discussion on what languages are “best” for game development. C# became the top language for game development mainly due to its connection with Unity and later Godot. And theres plenty of Youtube stuff on C#/Unity/Godot design and indie game developer devlogs.
But it’s not the only option available, and which language is the best is going to depend on the language ecosystem, your familiarity with low level development concepts, and what you’re trying to make. The most common choices other than C#: C++, Rust, Python and Lua are the ones I’ve seen the most.
Python actually has its own game development library pygame which is quite popular, and there is a video for Creating a Voxel engine from scratch in Python which unironically explains that “from scratch” means using 6 third party libraries. Myself I probably wouldn’t use Python because it’s interpreted (unless you compile with pyinstaller or something like that), but there’s been a lot of good and fast stuff written in it.
This kind of begs the question, what are the core foundational concepts in learning game development that are independent of language? I would answer OpenGL and its younger brother Vulkan, OpenXR, and advanced mathematics. Specifically in math you want to know matrix and vector algebra (for simple object transformations and positioning, ray casting, and pretty much everything else under the sun), linear algebra and a little of calculus foundational concepts wouldn’t hurt.
But I can’t emphasize Vulkan enough. Unless you plan on using a game engine like Unity or Godot (and even if you do), GPU based rendering concepts is a good thing to put in your toolbox that will help you to rise above the noob who just uses the default shaders rather than rolling your own.
Here’s a list of links I put together to round out my tutorial on customer renderers in Vulkan and Hotham a couple months ago. It’s just pasted directly from the Markdown so apologies for any formatting errors.
Books which develop skills in computer graphics
- Pawel Lapinski’s Vulkan Cookbook is a recipe based book on Vulkan that nevertheless also provides coherent explanations for all of its recipes.
- Marco Castorina and Gabriel Sassone created Mastering Graphics Programming with Vulkan, a book on creating a rendering engine from first principles using Vulkan.
- Graham Sellers and John Kessenich created The Vulkan Programming Guide, the official guide to learning Vulkan
- Multiple authors including Tomas Akenine-Moller contributed to produce Real Time Rendering, the resource page linked above includes chapters on collision detection and ray tracing. They also provide a book recommendations page which includes a lot of free books such as Principles of Digital Image Synthesis, Immersive Linear Algebra, and more.
- *Richard S. Wright, Nicholas Haemel and others contributed to the OpenGL SuperBible, now in its sixth edition. This is the book on OpenGL, with principles that are relevant to Vulkan and GLSL shaders.
- Eric Lengyell produced Foundations of Game Engine Development, a four volume series dedicated to the algorithms and mathematical underpinnings of the craft.
Computer graphics: Transformations
- GPU Open has a Matrix Compendium, a collection of information on matrix math for transformations in one place.
- This Youtube tutorial links to an interactive series on visualising quaternions and 3d rotation.
Shaders and OpenGL
- The Book of Shaders is a good site for information on programmatic fragment shaders.
- Inigo Quilez has articles on numerous computer graphics related topics, also focusing on fragment shaders.
-
Learn OpenGL is a resource devoted to, as the name suggests, learning about OpenGL. Both OpenGL and Vulkan were
developed by Khronos Group and share a number of key similarities especially with respect to the use of shaders and the application of GPU
parallelism concepts to these programs which lie at the heart of real time rendering. -
glslEditor is a project which lets you develop programmatic fragment shaders in real time, and
is available to use live at this website address
Vulkan Resources
- The original resource for learning Vulkan is the well known Vulkan tutorial, which focuses on drawing a single
triangle before moving on to slightly more advanced topics such as mipmaps, multisampling and depth buffering. - Another good written tutorial is VulkanGuide, which has an excellent selection of tutorials and links to relevant
websites such as GPU open, different sets of Vulkan samples and more. - Khronos Group’s Github Page lists all of the official Khronos repositories including the Vulkan Samples github. This includes multiple gigabytes of examples in different languages.
- Vulkan Tutorial in Rust is the above Vulkan tutorial which has been converted to Rust and Ash. This is worth a look to see the coding techniques used and the API calls translated into design patterns that can be replicated in your own applications.
- The GPU Open website has a section dedicated to developing Vulkan applications. This includes blog posts, sample code, libraries and tools.
- The Vulkan Youtube channel has a variety of talks which help to shed light on difficult topics. Within the last year, this channel has also posted a video from Vulkanised 2023 with a list of developer resources. Other useful talks:
- Brendan Galea has a series of 31 videos on developing a game engine using Vulkan which covers the material of the Vulkan tutorial and more in a coherent, code-driven way. You can find his tutorial here
- Voxelphile on Youtube has a number of videos on Vulkan in Rust, including:
- Tantan’s videos on writing a Voxel engine in Rust are IMO the best videos I’ve seen on the topic, and I recommend keeping an eye on this channel for useful content. The author is using Bevy for their implementation, but the concepts are OpenGL/Vulkan related at their core.
- Mike Bailey’s Vulkan page provides Vulkan material licensed under a CC4 ATT/NC/ND license. He also links to a very good summary of Vulkan’s structures called Vulkan in 30 minutes, available here
Start with “Python Crash Course” book.
But I want you to know that knowing programming language syntax (in your case, that’s python) isn’t same as knowing how to program properly. Basically, knowing programming language syntax is alike knowing a normal human language, but programming is being able to express your thoughts into words through language so people understand you. Same here, programming is being able to make algorithms, ie instructions to a computer through computer programming language, so the computer will do exactly what you want. You may know 10 different languages but if you don’t know hot to speak, you may probably don’t get benefit from being that polyglot. Learning a programming language may take one month, but learning to how to make good algorithms will take much more time. but, you are a lucky one since you have IG:UPX on your side.
edit: the only way to improve your algorithm making skills is practice. Codewars and Leetcode are here to help you with that. Start with Codewars, problems there are easier than on Leetcode. When you reach Leetcode, don’t be fooled by “difficulty” ranking, you better sort down by “acceptance” which means more percentage of acceptance = easier to solve. That being said, learn data structures and algorithms, solve more algorithmic problems, learn some high school math if you have time. When you know programming, you can master any language (expect machine code and PHP, of course) Do it every day. Better 1 hour a day than 7 hours at the end of the week.
AND, LESS OBVIOUS BUT AS WELL HIGHLY IMPORTANT THING: Take a break when you feel positive emotions in the process of programming, because this way the brain will remember that programming is a positive action. if you get up from the computer when you feel tired of the process of programming, you will not want to do programming later. This applies to all things. The most common cause of burnout is just overworking. Notice from your life: everything you have limited time for, you want to do.
I’ve invested about $3k+ into Unity, lol. We’re going to produce something with it to get a return.
My quote button is glitching, but think “Gunfire Reborn” in scope.
Good post though. You’ve provided some good info.