aspiring beginner game devs: would you be willing to follow programming tutorials revolving around Linux?

Krejlooc

Self-requested temp ban
Banned
Oct 27, 2017
24,081
I am preparing the release of a series of tutorials very soon that walks people through a lot of game dev related topics, aimed at complete beginners. The scope of these tutorials range from high level concepts all the way down to minute details. These are meant to be hands on guides, the reader is meant to follow along, code alongside the tutorials, play with the concepts and code provided and explained.

Because these attempt to establish a fundamental level of knowledge, I go into a lot of detail about the development environment itself. Thing is, currently, my guides are built around cross platform game development, using linux as the default environment and toolset. Now, my mindset is that because the audience begins with no knowledge of game development, it doesn't necessarily matter which environment I choose to work with, as I teach how to work in that environment in the first place. My tutorials, for example, have a long build up explaining how to even download and install linux in the first place.

My question is if this would be a deterrent for many. I want people who want to make games, but don't know where to start, to read and follow these tutorials, so I don't want to turn them away. But changing my guides to also cover windows development doubles a lot of my work. If I provide this level of detail for setting up a linux environment, I would feel obligated to provide the same for a windows environment if supported. The code the tutorial walks you through is inherently cross platform -- and I don't just mean linux x86 and windows x86 but supporting radically different non-pc architectures as well -- so that portion of the tutorials don't really change regarding windows development. I'm more wondering if I should actually take the time to, basically, tutor people in equivalent, redundant technologies. I.e. a separate tutorial on how to set up Visual Studio, walking you through how it works, explaining how git works in windows, etc. Now, caveat, I actually believe linux development is pretty easy, personally. People coming from a windows development background might struggle because things are different, but linux is actually a pretty great development environment IMO. I find many things actually more complex to cover when talking about windows development compared to linux development. Example: creating a project, and getting it integrated into your git repository, is personally easier and involves less steps IMO in linux than in visual studio in windows.

So, topic title question: is learning how to use and program in linux too scary for complete novices, again with the understanding that I'll be trying my best to walk you through it every step of the way? Would you actually be willing to install linux to follow such a guide?
 

Issen

Member
Nov 12, 2017
5,153
I'm a dev so my view on this matter might be biased, but if you don't have the willpower to learn how to install and work in a linux environment even with a handholdy guide, then you probably don't have the willpower to learn how to develop things in general, anyway.
 

Gloam

Member
Oct 29, 2017
1,094
Every experience I've had with Lunux has been frustrating. Clean installs, fresh starts, never seem to work out well. Learning a new thing is daunting enough without having to struggle against an OS. Let me put it like this, if you're writing an essay or drawing a picture and the paper keeps tearing or giving you paper cuts, you're not going to finish that work.
 
OP
OP
Krejlooc

Krejlooc

Self-requested temp ban
Banned
Oct 27, 2017
24,081
I'm a dev so my view on this matter might be biased, but if you don't have the willpower to learn how to install and work in a linux environment even with a handholdy guide, then you probably don't have the willpower to learn how to develop things in general, anyway.
Mm, I disagree personally. I think eagerness to learn how to program and make games is not necessarily the same thing as eagerness to learn how to operate and install an OS. And also, I know many programmers who don't know things like how to build a computer or even install windows. That might sound shocking, but it's true. Just because you're a tech head in one subject, doesn't mean you are interested in all tech.

This is really more about trying to gauge the interest of additional work i'm considering than making any definitive statement about one's level of motivation.
 

Stop It

Member
Oct 25, 2017
5,110
While installing Linux can be exceptionally easy, I think it may put people off.

Learning a new language (which is what programming is) is daunting enough without having to learn a new environment to learn it in.
 
OP
OP
Krejlooc

Krejlooc

Self-requested temp ban
Banned
Oct 27, 2017
24,081
Every experience I've had with Lunux has been frustrating. Clean installs, fresh starts, never seem to work out well. Learning a new thing is daunting enough without having to struggle against an OS. Let me put it like this, if you're writing an essay or drawing a picture and the paper keeps tearing or giving you paper cuts, you're not going to finish that work.
May I ask when your last experience with linux was? Genuinely curious because this is the kind of thing I'm worried about. I feel like linux is much easier to install and work with these days, but then again, I've been using it since redhat 6. If you tried linux ages ago, perhaps you'd feel differently today. Alternatively, if you are talking about recent experiences, then that very much influences my decision going forward.

Also, could you maybe go into detail about the exact kind of problems you ran into? Not necessarily in depth, but a little bit more detail about what about the installation process you had trouble with? Was it things like linux booting to a command prompt instead of a gui? Or something else?
 

Stop It

Member
Oct 25, 2017
5,110
I do like the idea though.

Reminds me of the big book of BASIC you could get with the ZX Spectrum where you learned new things and had to implement the coding as you went along.

Alas, I didn't stay in that field but I have every respect for coders because it's an artform in itself.
 

Dreamboum

Member
Oct 28, 2017
19,330
It will always be the biggest deterrent there is. I use Linux for work, I know a bit of my way around, but you're asking people to have an entirely different environment than what they are used with. Few people will change homes for a tutorial

At this point you gotta consider if you're making a tutorial for the many, or a tutorial for the really motivated folks who are ready to go the full distance, but you can't try to teach both sides and do a good job of it
 

Gloam

Member
Oct 29, 2017
1,094
May I ask when your last experience with linux was? Genuinely curious because this is the kind of thing I'm worried about. I feel like linux is much easier to install and work with these days, but then again, I've been using it since redhat 6. If you tried linux ages ago, perhaps you'd feel differently today. Alternatively, if you are talking about recent experiences, then that very much influences my decision going forward.

Also, could you maybe go into detail about the exact kind of problems you ran into? Not necessarily in depth, but a little bit more detail about what about the installation process you had trouble with? Was it things like linux booting to a command prompt instead of a gui? Or something else?
Sure, I installed elementary OS late last year and used it for a while but it was very scattershot with its behaviour: wouldn't wake from sleep, updates would download but not install or install and then reboot to nothing.

Also gave Ubuntu the college try this year but similar issues occurred. Waking from sleep was inconsistent. Updates would throw up an error message and my PC's startup got all screwy and wouldn't boot Windows like it used to.

I still have Ubuntu installed but never touch it, and frankly, the lack of usability makes me inclined not to do. I feel the old adage is true. Linux is great and can do anything you want, if you don't value your time at all.
 

Issen

Member
Nov 12, 2017
5,153
I don't find that operating a certain flavor of Linux (current ubuntu distro with Gnome desktop) is too dissimilar from operating Windows. Have you considered providing a ready-made VM to run under Windows in order to bypass the installation hassle?
 
OP
OP
Krejlooc

Krejlooc

Self-requested temp ban
Banned
Oct 27, 2017
24,081
It will always be the biggest deterrent there is. I use Linux for work, I know a bit of my way around, but you're asking people to have an entirely different environment than what they are used with. Few people will change homes for a tutorial
Just to clarify, the linux portion of my tutorial is not asking people to, like, debug their programs from a command line with gdb. The scope of that portion of the tutorial is to get people up and running with a graphical IDE. I use linux, because, again, I begin from a fundamental understanding. I want to fill in all gaps in knowledge, from the ground up. It begins by having people work through a makefile line by line, to explain conceptually what a compiler is, what object files are, what the computer and IDE actually does. And then, from there, it walks you through setting up a graphical IDE. The end goal isn't to have people working in command line interfaces, it's to use linux's ability to peel things back, so that when I move onto more easy to use tools and environments, the user understands how it works before they even begin working. This knowledge also translates to windows development, walking people through these things will also make Visual Studio make more sense.

Once you finish that part of the tutorial, you can essentially use any IDE going forward, because you'll know what they do deep down below. You'll get what a linker is, you'll understand what builds are, you'll grasp a shared object (or DLL in windows terms). I did this, because these are concepts I always found very lacking in tutorials I followed when I was much younger. This is a type of knowledge that is important that many guides don't go into beyond "do this, do that, type this here."
 

datschge

Member
Oct 25, 2017
545
Interesting topic.
I think eagerness to learn how to program and make games is not necessarily the same thing as eagerness to learn how to operate and install an OS.
You could make it more defined and sandbox-y by using some ready made images that contain everything and can be booted from live usb and in VMs without any installation.
 
OP
OP
Krejlooc

Krejlooc

Self-requested temp ban
Banned
Oct 27, 2017
24,081
Sure, I installed elementary OS late last year and used it for a while but it was very scattershot with its behaviour: wouldn't wake from sleep, updates would download but not install or install and then reboot to nothing.

Also gave Ubuntu the college try this year but similar issues occurred. Waking from sleep was inconsistent. Updates would throw up an error message and my PC's startup got all screwy and wouldn't boot Windows like it used to.

I still have Ubuntu installed but never touch it, and frankly, the lack of usability makes me inclined not to do. I feel the old adage is true. Linux is great and can do anything you want, if you don't value your time at all.
Very much appreciate this post. An aside, and not trying to get you into linux here, but that "wake from sleep" problem is actually something that I've run into on a lot of laptops running linux, and the fix is actually really simple. I actually cover that in my guide, haha. If you're curious, you need to change sessions temporarily to get X (the window server) to wake up. Don't worry if that is gibberish to you, I explain it in more detail in the guide. The super simple explaination is that you just have to press ctrl+alt+F6, then ctrl+alt+F7 and your laptop will wake up.
 
OP
OP
Krejlooc

Krejlooc

Self-requested temp ban
Banned
Oct 27, 2017
24,081
Interesting topic.

You could make it more defined and sandbox-y by using some ready made images that contain everything and can be booted from live usb and in VMs without any installation.
I actually do offer a section on my tutorial regarding installing linux via a VM. But the purpose is to let people get familiar enough to chose any distro, not get pidgeon holed into a single one. So building a distro myself is the the opposite of my goal. I explain, for example, what dependencies are, and how to install them (and I future proof myself by explaining how to search out and solve the unexpected or troubleshoot an error I can't anticipate). Again, a fundamental level of knowledge one should have to tackle the task of being comfortable with working with the linux development environment.

FWIW, the linux distro I use in the guide is Xubuntu.
 

zedox

Member
Oct 28, 2017
4,959
I don't think it's worth your time to do such a thing. If you want to get as many people as possible to use your tutorial, do it on the platform that the majority of people are on. Just add Linux support for your tutorial later. I do agree with the container idea though. I currently use dev containers with VSCode but that's not for game development.
 

Dreamboum

Member
Oct 28, 2017
19,330
Just to clarify, the linux portion of my tutorial is not asking people to, like, debug their programs from a command line with gdb. The scope of that portion of the tutorial is to get people up and running with a graphical IDE. I use linux, because, again, I begin from a fundamental understanding. I want to fill in all gaps in knowledge, from the ground up. It begins by having people work through a makefile line by line, to explain conceptually what a compiler is, what object files are, what the computer and IDE actually does. And then, from there, it walks you through setting up a graphical IDE. The end goal isn't to have people working in command line interfaces, it's to use linux's ability to peel things back, so that when I move onto more easy to use tools and environments, the user understands how it works before they even begin working. This knowledge also translates to windows development, walking people through these things will also make Visual Studio make more sense.

Once you finish that part of the tutorial, you can essentially use any IDE going forward, because you'll know what they do deep down below. You'll get what a linker is, you'll understand what builds are, you'll grasp a shared object (or DLL in windows terms). I did this, because these are concepts I always found very lacking in tutorials I followed when I was much younger. This is a type of knowledge that is important that many guides don't go into beyond "do this, do that, type this here."
Can't you showcase those at a conceptual level without the use of Linux or Windows? It just depends on your target audience at the end of the day. Installing Linux will be a 6 to 8 hours process at the very least for a beginner so that's already a level of engagement that most people won't go through and people will rather go for scattershot tutorials here and there that will teach them exactly what they want rather than going through a whole process. Unless you're planning to get it on Udemy or Coursera.

I think talking about things from the pov of Linux always interesting so it's worth putting, it just depends where you put it. If you frontload it, you have lost your audience. Especially if your tutorial is a linear read rather than "read what you need" basis
 

Vitet

Member
Oct 31, 2017
1,850
For a working environment, personally, it would put me off. One of the main reasons I use OSX is for the audio tools and drivers already imbued at OS-level (CoreAudio) and all the device compatibility. I used to tweak a lot Windows installations, I came from the DOS era of autoexec.bat and config.sys nightmares, and even tried a pair of Linux distros (very little). But in the long run, for a working target, I want to spend the less time possible configuring or understanding external OS things than currently working.
 
OP
OP
Krejlooc

Krejlooc

Self-requested temp ban
Banned
Oct 27, 2017
24,081
Can't you showcase those at a conceptual level without the use of Linux or Windows? It just depends on your target audience at the end of the day. Installing Linux will be a 6 to 8 hours process at the very least for a beginner so that's already a level of engagement that most people won't go through and people will rather go for scattershot tutorials here and there that will teach them exactly what they want rather than going through a whole process. Unless you're planning to get it on Udemy or Coursera
No joke, I find doing those same tasks in windows through command line tools more difficult than doing the same thing in linux.I mean, yes, ultimately, the makefile is just sending bash commands to gcc, but it's done in a programatic way. I could walk people through installing make in windows, I guess, but that's generally not how development is done in windows. I'd be teaching things not as they are done. In Linux, makefiles are very much a fundamental part of how many people use the OS. It provides a natural way to understand how your program goes from source code to executable.

I mean, I am very familiar with batch files and the sort in windows, so don't get the impression that I couldn't make it work. It's just... well, I truthfully am most familiar with linux development these days. It's honestly what I use.

The entire purpose of this project is to NOT have people go through scatter shot tutorials. I've been writing these tutorials from the perspective of what I'd want to have known back when I was first starting out. Doing things through scatter shot tutorials made things way harder for me. There are just things that tutorials that aren't written with specific other tutorials in mind don't cover or gloss over. I felt like I'd have to hunt and peck for the relevant information through a bunch of things I didn't necessarily need to know. This is simultaneously a way for me to trim the fat -- teach people only what they need to know for the task at hand -- while also allowing myself to be as thorough as possible about the subject.
 

RPGam3r

Member
Oct 27, 2017
4,861
As a dev I am probably biased, but oddly enough different from the first dev. I think I would bail immediately on a tutorial not in the OS I prefer to code in (Windows). I go to tutorials to learn a specific thing, adding more to that is noise. Also, I’ll immediately wonder how much carries over or needs redone in terms of setup with small (but annoying) differences when I go back to my preferred environment.
 
OP
OP
Krejlooc

Krejlooc

Self-requested temp ban
Banned
Oct 27, 2017
24,081
I think talking about things from the pov of Linux always interesting so it's worth putting, it just depends where you put it. If you frontload it, you have lost your audience. Especially if your tutorial is a linear read rather than "read what you need" basis
These are very much a linear read, every bit was written expecting you to have read the stuff that came prior, save for a supplemental section on crash course in basic comp sci, which could be skipped.
 

Sapo84

Member
Oct 31, 2017
239
People coming from a windows development background might struggle because things are different, but linux is actually a pretty great development environment IMO. I find many things actually more complex to cover when talking about windows development compared to linux development. Example: creating a project, and getting it integrated into your git repository, is personally easier and involves less steps IMO in linux than in visual studio in windows.
I'm honesty puzzled, as long as you have an IDE installed and git configured (Git for windows will cover that part for windows) what would be the differences? The Git CLI is exactly the same after all.

Anyway, if the content of the guides is not platform specific imho it doesn't make a lot of sense to create two SO-specific part only for setting up the environments, it definitely should be enough to have a linux version and, maybe, linking some decent guide on how to setup a project in VS. I doubt that there are 0 good resources on that.
 

datschge

Member
Oct 25, 2017
545
I actually do offer a section on my tutorial regarding installing linux via a VM. But the purpose is to let people get familiar enough to chose any distro, not get pidgeon holed into a single one. So building a distro myself is the the opposite of my goal. I explain, for example, what dependencies are, and how to install them (and I future proof myself by explaining how to search out and solve the unexpected or troubleshoot an error I can't anticipate). Again, a fundamental level of knowledge one should have to tackle the task of being comfortable with working with the linux development environment.

FWIW, the linux distro I use in the guide is Xubuntu.
I understood that. But I think you are jumping ahead a little bit, making any kind of installation a prerequisite. I feel giving people any easy way to look and toy with a live system without affecting their current installation before they commit to anything else is a good way to reach more people. Live CD/DVD/USB/VM images like the veteran Knoppix system are ideal for that.
 
OP
OP
Krejlooc

Krejlooc

Self-requested temp ban
Banned
Oct 27, 2017
24,081
I'm honesty puzzled, as long as you have an IDE installed and git configured (Git for windows will cover that part for windows) what would be the differences? The Git CLI is exactly the same after all.
With visual studio, I seem to always run into weird issues with git when I try to do an initial push to a git server. The IDEs I use in linux, are basically wrappers for git CLI commands, where as visual studio hides much of that from you and expects you to use their implementations. I'll run into things like, say, a merge not going through correctly and have to figure out how to fix it from within Visual studio. I just find it all much easier in linux. It's totally a preference thing.

Anyway, if the content of the guides is not platform specific imho it doesn't make a lot of sense to create two SO-specific part only for setting up the environments, it definitely should be enough to have a linux version and, maybe, linking some decent guide on how to setup a project in VS. I doubt that there are 0 good resources on that.
The problem IMO is that part of the linux section is walking people through the creation of a makefile, which is something I wouldn't know how to tackle cleanly in Windows. There are tutorials for VS outside of my own that I specifically have in mind, that will, for example, teach you how to build an SDL2 application, but they are the "download this specific file, type this here, click that, type that here" type of guide instead of imparting an understanding of why you're typing this here, clicking that, type that here, etc. I don't want people to follow my rote commands, I want them to comprehend why the compiler has those fields to begin with. To me, the easiest way to explain this, is to have people do things by hand first, and the easiest ways to do things by hand are inherent to how linux works.

One other thing I've considered: Using the WSL in modern windows to walk people through the makefile examples. Only problem is that there are some unimplemented kernel functions in WSL that I've seen pop up and cause problems specifically related to my exact tutorials.
 

zoodoo

Member
Oct 26, 2017
6,905
Montreal
I'm a dev so my view on this matter might be biased, but if you don't have the willpower to learn how to install and work in a linux environment even with a handholdy guide, then you probably don't have the willpower to learn how to develop things in general, anyway.
I'm a dev and having to troubleshoot stuff that are not directly related to the project I want to work on is frustrating and pointless mostly. Especially when it can be done with other easier tools.

Linux is a big no especially for beginners. Most people already have windows, why would they go to the trouble of installing another OS when it's irrelevant to what they want to work on? The advantage of linux is the full power you have to customize the os and of course using command lines. Beginners will mostly try to use it as they use windows which defeats the purpose.

Gamedev is already hard enough so no need to add more complexity.
 
OP
OP
Krejlooc

Krejlooc

Self-requested temp ban
Banned
Oct 27, 2017
24,081
Most people already have windows, why would they go to the trouble of installing another OS when it's irrelevant to what they want to work on?
Just to clarify, these tutorials also cover game console development using free and open tools which only exist in linux. A windows guide would have to rely on Cygwin in portions to use parts of this linux toolchain.
 
OP
OP
Krejlooc

Krejlooc

Self-requested temp ban
Banned
Oct 27, 2017
24,081
I don't think it's worth your time to do such a thing. If you want to get as many people as possible to use your tutorial, do it on the platform that the majority of people are on. Just add Linux support for your tutorial later. I do agree with the container idea though. I currently use dev containers with VSCode but that's not for game development.
the entire tutorial is already written for linux development. I've been writing this tutorial for years now. The additional work is detailing how to accomplish windows development. A tutorial on linux development isn't something i'm considering, it's already done. I'm trying to figure out if I should go the extra mile or not.
 

Deleted member 20297

User requested account closure
Banned
Oct 28, 2017
6,943
What happened to your Dreamcast dev thread on the old place? Did that ever get any traction? I know, it's a little bit off topic, just curious.
 
OP
OP
Krejlooc

Krejlooc

Self-requested temp ban
Banned
Oct 27, 2017
24,081
What happened to your Dreamcast dev thread on the old place? Did that ever get any traction? I know, it's a little bit off topic, just curious.
that is the topic. I'm prepping for release. It evolved into much more than just a guide to making a dreamcast game. It covers the totality of modern game development, using the dreamcast as a target platform, an example of static hardware. The guide also covers building bespoke tools on your PC for your game development, as well as a PC port of said game. It's hard to explain without actually posting the entire book, but it makes much more sense in the context of the guide. It's a comprehensive guide to game development.
 

zoodoo

Member
Oct 26, 2017
6,905
Montreal
Just to clarify, these tutorials also cover game console development using free and open tools which only exist in linux. A windows guide would have to rely on Cygwin in portions to use parts of this linux toolchain.
I believe you are over thinking it. A beginner does not need to think about cross platform early on. As a beginner, having something that works on their main platform, which probably would be windows, will be a major accomplishment. Cross platform tutorial can be a separate thing.
 
OP
OP
Krejlooc

Krejlooc

Self-requested temp ban
Banned
Oct 27, 2017
24,081
I believe you are over thinking it. A beginner does not need to think about cross platform early on. As a beginner, having something that works on their main platform, which probably would be windows, will be a major accomplishment. Cross platform tutorial can be a separate thing.
The guide is inherently about cross platform development, as the target is a static platform that you can't develop on. You need to make tools for this project and those tools have to run on an x86 platform. By approaching things with an expectation of cross platform development, it gave me an avenue to explain fundamental concepts. Like, down to bit manipulation and abstraction wrappers.

This is a comprehensive guide. It's aimed at beginners, but isn't meant to be a simple guide. It's everything anyone could ever want to know about a very deep, complex subject, in an enormous guide. It's actually a full black book.

Again, this is already written. I'm asking about one last section I'm considering, trying to gauge whether or not to add a windows supplemental portion that would retread a lot of ground I've already covered.
 

Red

Member
Oct 26, 2017
5,121
Krejlooc, I am not a beginner so consider my feedback with that in mind. It sounds like you already know this is a good and valuable idea. I agree with you. I don’t think it is necessary or even preferable for new learners to be 100% comfortable up front. The reason they are uncomfortable is because they lack the skills set necessary for comfort, which your class is providing.

I know I would have found something like this tremendously useful. The cost of Windows was a barrier of entry for me for years. I cut my teeth on Linux, because it was free. That’s important for a lot of people, and is going to open up this course to a larger community than if it required a paid operating system.
 

Carn

Member
Oct 27, 2017
6,691
The Netherlands
well, this seemed to be aimed a bit at me (since I want to start dabbling in game dev). I'm a big fan of Linux (all our company's stuff runs on on CentOS VPSs) because its way more transparant (in my experience) than Windows-based alternatives. On the other hand, I never worked in a Windows development or server enviroment so I'm probably biased.
 
OP
OP
Krejlooc

Krejlooc

Self-requested temp ban
Banned
Oct 27, 2017
24,081
Krejlooc, I am not a beginner so consider my feedback with that in mind. It sounds like you already know this is a good and valuable idea. I agree with you. I don’t think it is necessary or even preferable for new learners to be 100% comfortable up front. The reason they are uncomfortable is because they lack the skills set necessary for comfort, which your class is providing.

I know I would have found something like this tremendously useful. The cost of Windows was a barrier of entry for me for years. I cut my teeth on Linux, because it was free. That’s important for a lot of people, and is going to open up this course to a larger community than if it required a paid operating system.
Money is actually a big concern in my book, actually. I spent a lot of time exploring options for debugging, for example, that reduced the cost of materials needed. That includes actually working with emulator authors to provide avenues for people to avoid having to buy additional hardware. As in, my book influenced some dreamcast emulators.

That said, I don't think the cost of windows is a huge factor, really. I suspect most people already have windows in some way or another. I mainly want people to give the book a try, and not get turned away immediately. I'm weighing the pros and cons in this topic, I'm definitely listening to everyone's posts. I'm very much leaning towards a windows supplemental section at the beginning, I'm just kind of dreading doing so and feel like I want to get this thing out already. Again, years working on this, I'm sort of ready to move on.
 

Nessus

Member
Oct 28, 2017
2,100
I think it could work for some people, but for myself, I only have one main computer and it's a Windows gaming rig and I don't really have any interest in partitioning/setting up multiple OSes, especially if one of the OSes would only be for programming and nothing else.
 

zoodoo

Member
Oct 26, 2017
6,905
Montreal
The guide is inherently about cross platform development, as the target is a static platform that you can't develop on. You need to make tools for this project and those tools have to run on an x86 platform. By approaching things with an expectation of cross platform development, it gave me an avenue to explain fundamental concepts. Like, down to bit manipulation and abstraction wrappers.

This is a comprehensive guide. It's aimed at beginners, but isn't meant to be a simple guide. It's everything anyone could ever want to know about a very deep, complex subject, in an enormous guide. It's actually a full black book.

Again, this is already written. I'm asking about one last section I'm considering, trying to gauge whether or not to add a windows supplemental portion that would retread a lot of ground I've already covered.
Then your guide is more enthousiastic than gamedev beginner friendly. People who already have an idea about the subject would be more interested than the ones starting from scratch. You are touching some pretty deep topics. I am actually interested.
 
OP
OP
Krejlooc

Krejlooc

Self-requested temp ban
Banned
Oct 27, 2017
24,081
I think it could work for some people, but for myself, I only have one main computer and it's a Windows gaming rig and I don't really have any interest in partitioning/setting up multiple OSes, especially if one of the OSes would only be for programming and nothing else.
One thing to note, my linux installation guide walks people through installing linux on an external HDD. The idea is you plug in the USB HDD and your computer boots into linux. If you boot without that HDD plugged in, you boot into the normal OS on your computer. The Linux installation is external and removable, I wrote the guide like that on purpose.
 

TeddieBear

Member
Sep 14, 2019
2,892
I’m still a total beginner, but as long as you make it really clear and very hand holdy (I have problems with comprehension), then sure.
 
OP
OP
Krejlooc

Krejlooc

Self-requested temp ban
Banned
Oct 27, 2017
24,081
Then your guide is more enthousiastic than gamedev beginner friendly. People who already have an idea about the subject would be more interested than the ones starting from scratch. You are touching some pretty deep topics. I am actually interested.
I think you're getting hung up on the term beginner. It really is for beginners, I assume absolutely no knowledge out of my reader. But, like, to give you an idea of the scope of this book, you will learn SDL2. You will learn modern OpenGL. You will also learn ancient OpenGL. you will learn how a modern GPU works. You will learn how retro graphics cores work. You build a full game engine from scratch, including external, GUI-driven tools. Not a simple engine either. You'll learn programming patterns, build an event handler from scratch, create a fixed timestep game loop. You will learn the difference between C and C++, and see examples of how each language approaches solving the exact same problems. You will learn how to do object oriented programming in C (not C++). All this gets contrasted against static, exotic hardware, to drive the concepts home. The book even covers hardware modification, the creation of physical tools you use to do things with the exotic hardware you're working on that it wasn't intended to do. And, at the same time, I provide a purely software driven (emulation) alternative in case that's beyond people. Most of the book is spent explaining in detail how and why these things work, not just providing code as an example. It really is a complex book. But I still maintain it's for beginners.
 

Vash63

Member
Oct 28, 2017
1,307
I think you should release what you have as it's not a market that has a lot of documentation out there. Sure, many people are in love with Windows and won't bother trying other OSes, but there are tons of guides and courses already so yours would be less unique.

Very much appreciate this post. An aside, and not trying to get you into linux here, but that "wake from sleep" problem is actually something that I've run into on a lot of laptops running linux, and the fix is actually really simple. I actually cover that in my guide, haha. If you're curious, you need to change sessions temporarily to get X (the window server) to wake up. Don't worry if that is gibberish to you, I explain it in more detail in the guide. The super simple explaination is that you just have to press ctrl+alt+F6, then ctrl+alt+F7 and your laptop will wake up.
Minor note, any Gnome based distro will put gdm on F1 and the shell on F2, F7 would leave them on a TTY.

I believe you are over thinking it. A beginner does not need to think about cross platform early on. As a beginner, having something that works on their main platform, which probably would be windows, will be a major accomplishment. Cross platform tutorial can be a separate thing.
The problem here is that if you start your development learning to code only for Windows, you'll learn how to do things in a Microsoft-centric way which is very unique and incompatible with basically every other platform (including game consoles and mobile). If you learn the multiplatform tools from the beginning you will be much better prepared to release on any arbitrary platform instead of wondering why none of them work like Windows.
 
OP
OP
Krejlooc

Krejlooc

Self-requested temp ban
Banned
Oct 27, 2017
24,081
The problem here is that if you start your development learning to code only for Windows, you'll learn how to do things in a Microsoft-centric way which is very unique and incompatible with basically every other platform (including game consoles and mobile). If you learn the multiplatform tools from the beginning you will be much better prepared to release on any arbitrary platform instead of wondering why none of them work like Windows.
This is very much my mindset regarding development in general. I began coding with microsoft (and apple) tools when I was little. I slowly switched over to the linux side of things around 2004. 2014 was basically a breakout moment for me, and everything clicked, and this is entirely my philosophy. Linux development is, to me, also windows development. As in, when you code things in linux, you are also coding applications that will run in windows. The opposite usually isn't true unless you are being very careful.

Example: the tools I walk people through creating and building will compile a windows binary in linux just fine. You can build the tool in linux, then copy the executable over to windows, and run it without problem.
 

Astral/H3X

Member
Oct 25, 2017
3,278
Installing Linux is easy. Using the terminal in a basic way is easy.

But getting Linux to actually work right, on your specific computer, can be anywhere from easy to massive daunting task.

I'd say try to be in Windows if you can.
 

zoodoo

Member
Oct 26, 2017
6,905
Montreal
I think you're getting hung up on the term beginner. It really is for beginners, I assume absolutely no knowledge out of my reader. But, like, to give you an idea of the scope of this book, you will learn SDL2. You will learn modern OpenGL. You will also learn ancient OpenGL. you will learn how a modern GPU works. You will learn how retro graphics cores work. You build a full game engine from scratch, including external, GUI-driven tools. Not a simple engine either. You'll learn programming patterns, build an event handler from scratch, create a fixed timestep game loop. You will learn the difference between C and C++, and see examples of how each language approaches solving the exact same problems. You will learn how to do object oriented programming in C (not C++). All this gets contrasted against static, exotic hardware, to drive the concepts home. The book even covers hardware modification, the creation of physical tools you use to do things with the exotic hardware you're working on that it wasn't intended to do. And, at the same time, I provide a purely software driven (emulation) alternative in case that's beyond people. Most of the book is spent explaining in detail how and why these things work, not just providing code as an example. It really is a complex book. But I still maintain it's for beginners.
You are over estimating beginners. All the concepts you mentioned take a lot of dedication and motivation to learn. I am not in gamedev anymore and 90% of the programmers I work with nowadays dont know or care about those things. By the way if all you are saying is in your tutorial, that's an outstanding job you did. I believe you will find an audience for it.
 

MartinB105

Member
Nov 8, 2017
3,226
Anything that encourages more people to use the better OS and develop with crossplatform in mind is a good thing.
Every experience I've had with Lunux has been frustrating. Clean installs, fresh starts, never seem to work out well. Learning a new thing is daunting enough without having to struggle against an OS. Let me put it like this, if you're writing an essay or drawing a picture and the paper keeps tearing or giving you paper cuts, you're not going to finish that work.
I could say exactly the same of Windows.
 

dabri

Member
Nov 2, 2017
1,625
I am preparing the release of a series of tutorials very soon that walks people through a lot of game dev related topics, aimed at complete beginners. The scope of these tutorials range from high level concepts all the way down to minute details. These are meant to be hands on guides, the reader is meant to follow along, code alongside the tutorials, play with the concepts and code provided and explained.

Because these attempt to establish a fundamental level of knowledge, I go into a lot of detail about the development environment itself. Thing is, currently, my guides are built around cross platform game development, using linux as the default environment and toolset. Now, my mindset is that because the audience begins with no knowledge of game development, it doesn't necessarily matter which environment I choose to work with, as I teach how to work in that environment in the first place. My tutorials, for example, have a long build up explaining how to even download and install linux in the first place.

My question is if this would be a deterrent for many. I want people who want to make games, but don't know where to start, to read and follow these tutorials, so I don't want to turn them away. But changing my guides to also cover windows development doubles a lot of my work. If I provide this level of detail for setting up a linux environment, I would feel obligated to provide the same for a windows environment if supported. The code the tutorial walks you through is inherently cross platform -- and I don't just mean linux x86 and windows x86 but supporting radically different non-pc architectures as well -- so that portion of the tutorials don't really change regarding windows development. I'm more wondering if I should actually take the time to, basically, tutor people in equivalent, redundant technologies. I.e. a separate tutorial on how to set up Visual Studio, walking you through how it works, explaining how git works in windows, etc. Now, caveat, I actually believe linux development is pretty easy, personally. People coming from a windows development background might struggle because things are different, but linux is actually a pretty great development environment IMO. I find many things actually more complex to cover when talking about windows development compared to linux development. Example: creating a project, and getting it integrated into your git repository, is personally easier and involves less steps IMO in linux than in visual studio in windows.

So, topic title question: is learning how to use and program in linux too scary for complete novices, again with the understanding that I'll be trying my best to walk you through it every step of the way? Would you actually be willing to install linux to follow such a guide?
Prepare yourself for the onslaught of linux related environment issue questions.
 

zoodoo

Member
Oct 26, 2017
6,905
Montreal
The problem here is that if you start your development learning to code only for Windows, you'll learn how to do things in a Microsoft-centric way which is very unique and incompatible with basically every other platform (including game consoles and mobile). If you learn the multiplatform tools from the beginning you will be much better prepared to release on any arbitrary platform instead of wondering why none of them work like Windows.
True but learning to code on a unknown platform is a daunting task. Not many people will stick with that. I believe people already in the know would be more interested.
 

Weltall Zero

Game Developer
Verified
Oct 26, 2017
17,362
Madrid
The problem with asking this in a public forum is that you're going to have a lot of answers from people saying how easy it is to install Linux and how anyone who's really interested in game dev should put the work, while the people that will actually pass due to the OS will also pass on commenting to avoid being seen as lazy and being piled on.

Even having a poll in the OP is bound to skew results somewhat since voting is public and because the people who believe they would install Linux are not necessarily the same people who would actually do it when the time comes, but it would at least give you a measure of how many people would actually pass on them.

Prepare yourself for the onslaught of linux related environment issue questions.
This too. A tutorial is going to get you knee-deep in tech support already; making Linux a prerrequisite is going to multiply this by a factor of at least two.
 
OP
OP
Krejlooc

Krejlooc

Self-requested temp ban
Banned
Oct 27, 2017
24,081
You are over estimating beginners. All the concepts you mentioned take a lot of dedication and motivation to learn. I am not in gamedev anymore and 90% of the programmers I work with nowadays dont know or care about those things. By the way if all you are saying is in your tutorial, that's an outstanding job you did. I believe you will find an audience for it.
To be certain, this isn't a tutorial for, say, someone who wants to learn how to make a game unity. Perhaps a better way to phrase this is that it's a tutorial for beginning low level development. More in line with breaking into, say, demoscene, than learning how to use game creator.

So on some level, I expect my audience to already have a specific desire for this kind of stuff. I just am not clear where that level of desire extends. I have had other people proof read my book for me... but those are also demoscene coders, so it's inherently biased.
 

zoodoo

Member
Oct 26, 2017
6,905
Montreal
To be certain, this isn't a tutorial for, say, someone who wants to learn how to make a game unity. Perhaps a better way to phrase this is that it's a tutorial for beginning low level development. More in line with breaking into, say, demoscene, than learning how to use game creator.

So on some level, I expect my audience to already have a specific desire for this kind of stuff. I just am not clear where that level of desire extends. I have had other people proof read my book for me... but those are also demoscene coders, so it's inherently biased.
Then your audience is devs who want to learn low level gamedev. I believe that's a good thing as there are not many tutorials out there like that. Publish it, I want it.
 

Weltall Zero

Game Developer
Verified
Oct 26, 2017
17,362
Madrid
beginning low level development.
Ah, you probably should have led with that. Reading your other posts I now see what you're doing with this, and I think there's probably demand for it; I also think your target audience won't probably mind installing Linux so much as, say, a more typical game dev hobbyst looking to make a game in Game Maker, Unity or UE. But all the same, be aware that you're not going to get game dev beginners to follow your tutorial, and you shouldn't; it would be like learning to swim in the Amazon rapids.