[C#] Minesweeper recreated as a Console App
This isn't really a project - per say. More like part of what we are building as I try to teach Game Development.
On my first month of the new job (lecturing C# and Unity - we havent gotten to the Unity part yet), I had students follow along through the recreation of Minesweeper as I tried to explain and teach Programming/C# fundementals. I'm not used to teaching yet so everything I do this year will vert very very very experimental/touchy-feely. My goal is to get them onto unity within 2 months - but depends on how quick they can catch on. I am hoping my approach to teaching C# (and Unity) will be successful on my first year as a lecturer.
We started on this as a class follow along project within the first week of class.
This is the completed example:

There is also a very short video of it here...
On my first month of the new job (lecturing C# and Unity - we havent gotten to the Unity part yet), I had students follow along through the recreation of Minesweeper as I tried to explain and teach Programming/C# fundementals. I'm not used to teaching yet so everything I do this year will vert very very very experimental/touchy-feely. My goal is to get them onto unity within 2 months - but depends on how quick they can catch on. I am hoping my approach to teaching C# (and Unity) will be successful on my first year as a lecturer.
We started on this as a class follow along project within the first week of class.
This is the completed example:

There is also a very short video of it here...
Comments
PS. Your link is broken :)
I am teaching at Learn3D, the website hasn't been updated yet to show me as the C# lecturer yet though.
From the video, it looks like it's possible for your first uncovered tile to be a mine, which could be quite frustrating! I always wondered about how one might be able to guarantee that the first tile wouldn't be a mine while also still allowing the game to have a unique "seed" identifier that would make it possible to share the game with a friend and both be able to play the same grid. I imagined that the seed would end up needing to be made up of two parts, where one part was an actual seed, and the other was merely the co-ordinates of the first-uncovered tile to guarantee that that a mine would be removed from there if there was one there... but that didn't seem very satisfying. :P
--
I'd be really interested in seeing what you've got planned for the students this year, what the curriculum you've got planned is, and what kinds of outcomes/portfolio you envision their having by the time they complete the course. What do you think a successful student would have done? I've really wanted to be able to recommend people study game development somewhere, but I haven't been able to do it confidently in the past, and I think that in general it would be beneficial to both schools and us as game developers to strengthen our relationship. (Wits has a pretty strong presence here I think, but we haven't seemed to have much from any students elsewhere.)
My understanding is that you've been working on your own games for a few years, working solo, and therefore doing everything from art, to programming, to game design and audio! But it's also that you've mainly worked on one "uber" project that has spanned multiple years? Are you teaching to pay for continuing to work on that title? Or do you enjoy teaching? Or do you have other game career goals? (You don't have to answer if you think I'm being too probing! I'm just genuinely interested because I think you've done some cool work, but I also pretty much don't know you because you seem to have worked in a bit of a vacuum -- or at least separately from this game community -- and I'm interested in what kinds of attitudes toward game development you hope to pass onto your students.)
I've never taught a full year's course myself (I've only really ever dabbled in guest lectures and guest workshops, and most recently a 2-month mentorship-type thing, all of which I did as charity/community-building work), but from what I saw of Learn3D's previous year's output, I was quite disappointed with what seemed to be two (lacklustre) games made in a year. My feeling is that you're far more knowledgeable and experienced, both technically and artistically, than the previous lecturer, and I'm pretty excited to see what they make this year. I wish you the best of luck!
(By the way, I remember talking to you briefly at an artists alley at some sort of geek-related con a couple of years ago, but you seemed to brush me off pretty quickly when I said I worked at a game studio and primarily used Unity3D, where you were dead set on using XNA. I was kind of surprised back then, because usually when game developers hear of other game developers they're filled with interest and questions. :P I don't know if it was social anxiety or my somehow coming across as an arrogant asshole. [I think that in the past I've sometimes had that tendency!] It would've been nice to talk shop.)
I am suprised anyone even remembers me from like 2-4 years ago - I don't believe I could have left any kind of "hey that seems neat" impression - though i could be wrong.
I am teaching hoping to save up some funds for ProjectOS - I accepted this job because of three main reasons: Complete Creative Freedom, B: Short Working Hours, and C: Its a job related to programming - so hell yeah - I could finally escape the hell of working as a Freelance Web Developer . The project is supposed to go through a final (Coding Rewrite) for even more optimizations and such this year (also awaiting certain new featursets for unity now).
I based my initial course structure on the previous instructer's layout (however, his was 4 Months C# lecturing before moving to unity, I am aiming for 2 months - with more time on unity/c# and hopefully more time for students to build their rAge Expo projects). For the most part I am left to work out the entire course by myself. So for the first year I am pretty much figuring it out as I go along. At the end of this year ill have a clear idea how comfortable I am with the "teaching' aspect of this - it's damned challenging - but fun at the same time.
As for the students - Last year only had 3 students (one which gave up) - as far as I am aware.
The main interest in the course however is covering enough unity for them to successfully build a complete single level (and relatively easy to build) game that actually functions. I have 7 students (2 which I am already worried about) - none of them with any previous programming experience. I also tested their ability with math - and all of them actually really suck at math - so in one year they have to learn C#, Unity, Game design theory, linear algebra and relearn high school math (I asked them to calculate the bottom right corner coordinate of a rectangle using only size and position to test their basic math level - and no one got it - which means I have to refresh them on everything they forgot or ignored in highschool and before - as not one of them realized it was basic addition without hints ).
As nice as it would be for them to create an awesome fully featured game - the results will depend on the students: their interest level, motivation, weather they actually complete the excersizes I give them, their creativity, their design protytype/concepts - etc - some of them seem slower than others. One year isnt very long for absolute beginners to programming to learn all that much, much less an entire game engine's api set - so many things unfortunatly have to be left out - and left to the fundamentals and basics. I would rather hope for a Second Year class to exist to cover more advanced topics (eg: Shaderlab, low level api, networking). So sadly I don't think pushing anything more complex than some playable casual games (ala flappy bird) would be too wise right off the bat - especially when they are responsible for their own content and art as well - where the guys with existing 3D/2D skills already will obviously have some kind of advantage as far as visuals are concerned.
Out of this year's class 3 of them took the Maya course, and one of them took the 2D animation course. The rest dont have any artistic or design background at all as far as I am aware - and none of them have ever written code in any language.
---
I cant remember who I talked to at some con (Probably Geekfest) - there was abunch of people - I was irritated that day because I didnt thing anyone was actually taking my own work seriously. XNA got frustrating at that point - the last thing I wanted was to throw away an entire self developed game engine - but that became fate in the end - but building that engine is how I learned about the inner workings of a graphics pipeline and creating one from scratch. My typical Learning by doing (and sometimes failing many times) approach anyhow.
I don't really remember you - but I actually believed it wasnt possible (I was under impression it would be impossible without proof of my education - which I was obviously wrong about, my first actuall attempt got me quite alot of responses). Also a couple years ago I was actually really losing my mind after some job interviews that totally did not go as expected - I would ace their programming tests in only a matter of hours on site (apparently others took up to two weeks, did it at home - yet still failed... which i cant understand...) - just to be told that the job would be too easy for me.
Also - life was getting in my way - specifically in regards to cash flow.
Though I suspect you might be one of the LegionInk guys - as I used to post some of my art there (in the forums) - but never had the money to get a table with them at art related events. I did hang out with legionInk guys at two rAge events though ( the first time on my own, the second time while working for Uncut - shortly before abandoning anime related artwork out of pure frustration - and Uncut only increased my frustration even more).
In the end I believed getting any kind of job in the game development/software development world would be quite impossible without some kind of degree - even for someone who has been writing code almost consistantly since 1998/VB6 era entirely for fun. I thought the only way I would get into some creative development field would be to somehow come up with my own project that sold well (rather over ambitous) - and ended up picking the really tough project to develop solo. Basically I was betting my entire future on it - only to have life interfere with my project multiple times - including two cases resulting in loss of code (thank Eskom) during aperiod with very limted internet access (lack of funds).
And then I disovered just this year - January .... that it was actually easier than I thought, I didn't actually believe my only posted attempt to get a Game Dev related job would pay off - so was surprised at how many messages I recieved (Mostly from cape town). So feeling somewhat more confident now - I need to build a better portfolio, and I should probably move to Cape Town....
This course is basically gonna help me build up additional resources and portfolio items to try to use as demonstrations before I move onto some studio - however all of these are just stepping stones for me. In the end I just want to somehow get my super ambitous game to a completed state - and Im pretty sure I cannot do it alone. It has been restarted several times - each restart being even more complex than its previous incarnation.
By trying to build up funds I hope to gain eventual additional members to this project - OR after a year or two at learn 3D, hopefully find a game studio or team that may be interested in the ProjectOS universe. Otherwise - I would be prefectly happy in probably just about any game development environment - doing nothing more than writing code.
In the end I want to concentrate entirely on - and only on writing the code for this thing - and rather hire others to build my assets instead - thus I would need a 3D/Texture Artist, sound guy, and possibly one other - at least. As it stands I am 100% convinced there is no way I will pull this off now as the current project is even bigger than it was in my XNA days - unless I can find help - but getting help also requires money as "volunteers" generally don't pitch or dissapear very quickly.
In regards to Unity - back then (before the switch) I wasn't actually convinced by it as I expected it to be like many other C# oriented engines that were simply - lackluster in documentation and communuty support (this was after installing a whole bunch of other game engines just to uninstall them shortly after) - but after getting frustrated with MS's stance on XNA - and MonoGame lacking critical API features that my engine required in order to function - and also discovering some of Unity's API was actually structured not too differently from my own XNA based engine... from day one of installing Unity I had already gotten working prototypes of things shooting stuff around and killing each other. So was rather surprised at how easy it was to actually switch - mainly due to a "better than most" as far as documentation and community is concerned. No more trying to build a game engine - more building the game instead - though it has also given me a few headaches as well.
However - my biggest thanks in regards to unity is a man by the name of Gerald Orban - who works as a lead developer at Blackbird Interactive (Vancouver)- who has basically shared loads of advice and feedback over that last 4 years in regards to game development, and Unity in general - was basically my go to person whenever I had some issues, or questions in regards to Unity or some really complicated matter in my own project. He basically did alot of good coaching during my transition to Unity. I didnt hesitate to spend my cigarrete budget on the Homeworld: Deserts of Kharak and Homeword:Remastered - even though I ended up getting both games for free anyhow as a thank you gift to early alpha testers and beta testers - thus stuck with a spare activation code.
In the end my ultimate goal is to
- A: Finally build my dream game - which is hard as hell to do alone - and if successfull - hopefully live off it and build more games.... thus having fun writing C#.... every day - for the next 200 years.... or undead - and hopefully form an actual development team along the way.
or
- B: Find a suitable studio/project that I would be well suited to me - have fun writing code - earn a living doing what I enjoy most: C# - for as long as possible - until I am a 200 years old - or undead.
I had compiled a video highlighting my development progress from the beginning of the Unity switch (and prior artwork) leading all the way to it's current state - which I suppose i should upload and link here...
Edit: Unlisted Video Here
(Holy shit this is a long response)....
Thanks for the detailed reply! It's really nice to get some insight into your experiences and how they've framed your thinking (or vice versa). I'm particularly impressed with how much you managed to do being self-taught.
I think I remembered you more distinctly because of how surprised I was to hear your skillset (I keep an eye and ear out for people who're both artists and programmers, because it's pretty rare, and also because I -- somewhat subconsciously -- add them to the list of people I think I might have to compete with for work in the future; this self-preservation has died down a lot as I've gained confidence in the sustainability of my game dev career), and that you were going it alone, and (at the time) didn't seem to have interest in hearing that there were game studios in the country who could use someone with your skills. :P I mean, I can understand some of the reasons for going it alone (although I personally think it's better to work at a studio, learn from more experienced people while being also being paid), but at the time it felt to me as if you actually did want to work in a studio, but somehow didn't want to hear that the studios actually existed, or something like that. I could be totally wrong though! It was just my impression from the couple of minutes of listening to you talk!
Yeah, I was somewhat involved with LegionInk, more because I had friends running the place, and friends selling art than that I was an active contributor or anything. I think the time I met you I was hanging out at Kim's stand because I had a crush on her. XD (We're dating now.) To be honest, I'm rather happy you're not drawing anime any more. It looked like something that would be holding you back artistically, and I felt like you'd grow a lot more as an artist doing something else, and revisiting it much later on if it was something you wanted to do.
I don't know how open to feedback you are with both your course and how you've been approaching making games. Again, when it comes to teaching I'm hardly experienced, but I think I understand how difficult it is from the little I've done of it. I'd like to propose a couple of ways of thinking that might achieve higher rates of success. I'm not saying I'm right, but I worked on several shipped titles as an artist, tech artist, lead artist and programmer (I've also worn a lot of hats, though I expect I have less programming experience than you do, but lots more game prototypes).
Friends of Design also only has a one year course, and they seem to have a much broader focus than you do, where they're doing much less programming (I'd thumbsuck that it's only a quarter of the year's work), and much more of everything else. However, when I chatted with Lars about their course, he argues that it's more about the "game technology" angle of it, i.e. he doesn't seem to expect that his students would enter the game industry itself right out of his course (which I can understand, given that there aren't enough game jobs available to absorb all of the students who go through these courses anyway). Instead, his angle is to teach people who're already in web dev, graphic design, and other media, and to get them to be using game tech to enhance their own skillsets and use the tech elsewhere, making interactive experiences more of a thing. If they actually want to get into the game industry as artists, game designers or programmers though, they'd have to do further study/learning. Getting them into the game industry itself isn't a goal. You'll notice that the course itself is called something like "game graphics and multimedia entertainment", and its description helpfully says you'd learn skills for working in the "digital entertainment business" rather than actually saying that you'd be working in video games, which I think is much more honest than I've seen in some other places. I think it's an interesting way to try and create a niche for themselves from the other schools that teach 3 year courses in pure art, or pure maths/comsci.
If Learn3D's focus is heavier on the C#/programming side, the students who graduate would be competing with other students who're studying actual BSC/BSCIT/Maths/Comsci/BSCEng whatever courses as programmers, right? And those will be people who've studied a minimum of 2 years of pure maths at a university, and will as a result be in a far stronger position (I expect) when it comes to linear algebra and multivariable calculus, physics, and the like. They're more likely to understand the inner workings of a game engine. It's certainly a strong way to enter the game industry, though of the 20+ local people that I know who've been credited on shipped titles as game programmers, I think 3 of them don't have maths-related degrees (and I'd argue that all three are strong game designers). I mean, I do think you could get more done in a year, practically, than a university could in a year, given how much admin and bureaucracy there is in a large organisation, and how I found a lot of the core subjects (like maths) had a lot of fluff built in that wasn't really relevant to games, but was taught anyway because of how it was a pre-requisite for something that was coming up in physics or stats or something. (I'm not saying that stuff isn't useful, because all learning is useful; just saying that when it comes to maximising learning vs time spent, there was a lot of stuff that I believe weren't very important to learn then and there).
For the past 5 weeks or so I've been teaching a class to write shaders for Unity. I give them around 1.5-2 hours of learning videos per week, and we have a 1-2 hour Google hangout. As you know, writing shaders can get really complicated, and could rely on some pretty heavy knowledge of linear algebra, the architecture of a graphics card and how Unity's graphics pipeline and renderer work. As far as I know, none of the students have done anything beyond high school maths. What I've seen come out of some them makes me really proud. I've seen smoking skulls, and magic bottles, and lava, and wispy magical gems, and fractal-like firey things... and that was all before knowing what a dot product is, or what a transformation matrix is, or even not really understanding what a "fragment" actually was, or anything that a graphics programmer would tell you is fundamental. Yes, there's a LOT of hand-wavy stuff going on, a lot of maths that isn't necessarily technically correct... but if it looks fine, then I don't really care at this point. And if there's something that they want to do that does require a bit more maths, then I introduce the maths concept when it's needed, or else introduce it later on when I think they're ready to learn one more thing. (I also do give them little tips about optimizing, or doing things the "correct" way, but it's always framed as an extra. It's more important that they're enthusiastic about making awesome stuff that works at all, than for it to be optimized or clean or to have a sound understanding of the underlying mathematics. They all know that knowing maths or programming would be helpful, because they can see the holes in their own knowledge. In a very real way, through practical work, they have a sense of "knowing what it is that they don't know", which gets them asking very relevant questions, and Googling some tough stuff themselves, and asking me to explain more difficult things when the search results give them some dense linear algebra.)
I think there are a couple of really big advantages to teaching it this way. Firstly, from the first week, they already had something they could play with. They might not have understood what all of the code in a shader did, but it was okay. As long as they had something visual -- they could see the results of what they were doing, even if the result was an error and a screen of magenta -- they had something they could interact with, and "play" with, and it allowed their curiosity to spur further discovery and self-teaching. Secondly, each time I taught something new, I taught it on its own in a the 1.5 hours of lecture video, and it would be directly applicable somehow to their shader, so they could play with it immediately. Here's the dot product, so here's how you can make your edges fade with fresnel. (I do explain what the actual maths behind the dot product is, just for interest's sake, but I don't focus on it. I focus more on how it works practically, with giving a cos-like response based on the angle between two vectors. I'm not even sure they know what vectors really are, but I expand on it more when they ask for it... :P It sounds terribly hand-wavey, I know, but man, if you could see the awesome stuff they've done on their own without my even prompting... SO RAD.) Cool, now we do almost the exact same thing, but use a light direction instead of a view direction, and now we've made something look as if it's lit (even if it's just super basic blinn/phong). What's nice about that is that the theory isn't front-loaded, the way it almost always is in academia. Each time you learn something, you also immediately learn why it's even useful, which I think is pretty handy. I wouldn't call it easy. I don't even think I'm doing that good a job of teaching the material (I sometimes forget what they have or haven't learnt, and end up going in too deep), and I'm pretty sure my students would say that the material's super dense. But I'm kind of okay with that, because, with my material being pre-recorded, they can watch it over and Google some of the stuff they don't know, and email me if they get stuck.
(There's one caveat to my story. I did ask my students to learn some stuff before taking the workshop, including doing a free self-taught 10-hour Javascript course. I didn't want to have to teach something like variable declaration, or making functions/methods, stuff I felt was material already given for free by various teach-yourself-to-code websites who have far more time and experience to teach that stuff better than I would. But still, they're writing shaders -- considered by many people to be an "advanced" topic. If some graphics programmer tried to "test" their knowledge, they'd probably fail (for now). And I DON'T GIVE A SHIT because they're making lava, and water, and magic bottles, and you know, actually making awesome game effects that make both them and me excited.)
I guess my point is this: if you're trying to teach programming from fundamentals -- and I really do see the usefulness in that; I'm really not trying to say it's not important -- you're setting your students up to having to competing directly with people who've got degrees, in which case what's the thing that would give them a competitive edge?
And secondly, I've found it more rewarding to get students to do the things that are exciting first, rather than laying out a theoretical or abstract groundwork. I feel that when you're excited about something, you start wanting to learn the theory because you see how having these new tools in your kit help you to make even more cool things.
Now, again, I have very limited teaching experience, but I feel like a really good game course for teaching someone to make games in a year would be (1) to use a game engine right from the start, whether it's Game Maker, Unity, Construct or whatever. I think the satisfaction of having something to play with right from the start fuels the desire to learn more things, and to engage with and play with the material immediately, resulting in more learning outside of the classroom, (2) to introduce theoretical concepts only when they're needed, with a "make a game" assignment that directly uses the thing they've just learnt, with an assignment brief that's easy enough to be completed really easily, but with plenty of space for embellishing for students to be creative and make it "their own", and (3) to have everyone see each other's games, play test them, and give feedback, so that they can learn themselves what makes things feel good, what makes things feel like fun. I think that at the end of a year of something like this, they'd have 20+ games, even though they're really simple ones, have a really good understanding of how long things take to make, and they'll be pretty good at scoping for when they make their "epic" 1-or-2-month-long project at the end of the year. They'd have a better game portfolio than many people with degrees. They might even be stronger game designers. They probably wouldn't have done things the "correct" way... but having shipped 5 years of games, it's all smoke and mirrors anyway. "Correct" isn't as important as "functional and shipped", and "optimized" isn't as important as "not hurting the experience with lag". :P But heck, I'm 100% certain that they'll have fun, and be much more likely to want to teach themselves new things as and when they run into new problems to solve.
I don't think it's unrealistic either. Duncan's held some GameMaker workshops at Learn3D in the past, where he's tried to get high school students to make full (albeit simple) games in a weekend. I think it was mostly drag-and-drop game making, but I think that's where it starts really, and it's arguably much more useful toward being better game designers (i.e. caring more about creating an enjoyable experience than the nitty-gritty of optimization and algorithms/patterns).
I hope that helps you, and I hope I haven't overstepped any boundaries or anything. I'm also not thinking too clearly because as I've said the flu and I'm drugged up and my thinking and sleep are kind of messed up because of it (and I'm typing this at 7 in the morning because I've slept for like 20 hours). I definitely don't want to come across as if I know it all or have all of the right answers -- I don't. I'm just sharing my experience (although I get paid to make games full time, so I guess I'm doing something right), and I think you're in a pretty good position to effect some positive change in game dev at Learn3D (especially given the complete creative freedom, no bureaucracy, no SAICA/SITA/whatever accreditation/requirements).
--
As a side note -- and again, I don't want to intrude or be presumptuous, but I just want to say this as well in case it does help -- I'd like you to be wary about making ProjectOS your life's goal or something. Like, I think it's important to have an identity that's separate from this dream project, especially if it's a project you've started over and over and made it more and more complicated. I think it's easy to stress yourself out, and kill some of the joy of just making stuff, by being super focused on one project. Because if the project fails (and projects do fail sometimes), it can make it feel as if you are a failure as a person, and that's a terrible (and unnecessary!) burden to put on yourself. I think it also makes you more resistant to hearing criticism, or makes other people scared of criticising your game in fear of hurting you, which directly hurts your games.
I think that if you're not doing it, it'd be really helpful to make some silly, terrible games, just for the fun of it, at game jams or something, lower your standards, have more fun, and potentially discover a whole world full of great game ideas that you can play around with. Some of them might give you new insight into ProjectOS. Some of them might be opportunities for using a game to learn something new. Some of them might be worthy of being made into full games themselves. Regardless, spending a few weekends here and there making a smaller, different game can't hurt, right? :)
Good luck, dude!
... which means you happen to be working/worked with/at a very specific 'certain' studio that made a certain 2D game that starts with a letter 'B'? - is also based in a cartain province in the west?.... that happens to also be a studio I am interested in.... but also happens to be a studio I felt I didn't have a chance of getting anywhere near - which also happens to be the studio my aunt suggested I contact in regards to perhaps gaining some kind of interest in my own project ... which I didn't do because I didn't think it was possible...
^ amirite? amirite?
Now I think I know eactly who you are (though still dont remember what you look like) - if my unedumacated guess is right.
When can we meet =) - come here so I can meet you. I already told Kim I wanted to meet you - while not actually realizing i had met you before.
Is this a movie or something? Where's the hidden cameras?
Suddenly this thread got super exciting.
In regards to theory - We (as in another guy named Simon who I asked to come in once a week) - is helping with the Game Theory side with a weekly lecture and presentation as well as having studen'ts play a variety of (board) games and such. Someone wrote something on Blackbird Interactive's whiteboard (as a joke) in regards to ideas for their next big game project... I happened to say an exact phrase on BBI's Discord channels mathing this - and then became aware of whiteboard. Then I ended up with a potential side project for the year (specifically for rAge).
I have two possible side projects I might be working on this year:
A: Maybe I intend to combine Flappy Bird with some Homeworld themed entity this year - maybe - if it seems silly enough to be stupidly silly - but likely only Homeworld fans would find it funny.
B: I had already built a Dawinia like thing with a map editor scene in it - which was used experimentally for a Darwinia inspired thing - last year - which I figured I could modify into some basic city builder thing - or alternatively modify it into a Darwinia Massacre of some kind (killing artificial life forms is not murdur, when you kill them creatively with viruses).
Though not certain I am going to actually do either of these ideas. Option B however already has code - a git repo and all kinds of mechanisms that already function.
As far as math is concerned - I wanted to know where they stood as far as linear algebra was concerned (obviously in nowhereland) - I suggested they try to learn them online if they were interested - but with unity though - I don't really need them to uctually understand the math behind the various math functions - just how to use them - and to at least be able to do whatever math their own games will require. I think two of these guys have a really nice understanding of lighting - which I hope could play out well for their projects.
Mainly the hardest part for me is of course trying to explain things on an absolute beginner level - that is the one thing I am not used to. Today I managed to confuse the hell out of all of them - I started talking about the IEnumerator interface..... and failed to simplify it enough. Oops. So many blank faces in the last 10 minutes of class. There is one place in the code of this Console Minesweeper that uses it.
Theres too much to talk about here. This could carry on forever. But definetly would like to meet you somehow.
Additionally - there are actually a couple case (shader related) issues I never overcame in regards to Shaderlab (mainly algorithmic/mathematic) that you might be able to advise on.
And, to be honest, even though I did study a maths degree, that was some 8 years ago, with a whole lot of being an artist since. My maths isn't nearly as strong as I wish it was. Most of what I've learned about shaders I learnt on-the-job from @AngryMoose while at Luma Arcade, or Googling and experimentation. I've done enough to get the visuals that I've wanted to get for the games I've worked on (because I think 95+% of shaders do the same sort of thing anyway), but there are definitely some potentially powerful things I don't do because I just haven't had to yet. And as I described above, I tend to learn the maths/tech when I have to learn it, and instead spend most of my time on being an artist, and learning to design better game experiences, because I personally find those more satisfying (and also think they're easier things to sell to consumers).