
Learn the fundamentals of c# programming for game development, covering variables, operators, flow control, input, functional programming, object-oriented concepts, data structures, and basic algorithms.
Install Visual Studio to set up the development environment for C# game development, selecting .NET desktop and Unity game development workloads, and sign in to save preferences.
Create your first c# console project in Visual Studio and explore the solution and project structure. Run the hello world program to see the entry point and exit code zero.
Learn how console.writeline prints hello world, and how strings and variables store and reuse data with a string variable named message.
Explore core data types in C# for game development, including integers, float, double, char, and bool, and learn about memory, precision, and when to use each type.
Explore operators in c# for game development, from arithmetic with integers and floats to casting, modulo, string concatenation, and boolean logic with and/or and operator overloading.
Learn to represent data with arrays in c#, create string arrays, and access elements by zero-based indices. Use array length to manage fixed-size collections and retrieve the last element.
Explore the if statement in C# by evaluating boolean conditions with if, else, and else if, using not, and, or operators for game logic.
Break down complex logic by introducing meaningful booleans, then compare switch and if-else for scenarios from ten to a hundred, using enums with named values like small, medium, and big.
Explore the while loop in C#; repeat a block while a boolean condition holds, shown by printing age from 1 to 17 and comparing with do-while.
Compare do while, while, and for loops in C#; do while guarantees at least one execution, while loops handle uncertain termination, and for loops offer clean initialization, condition, and increment.
Master iterating a string names array with for and foreach loops, printing each element with console.writeline. Compare for and foreach syntax and learn about break and scope in loops.
Learn to get input from the console in C# and find a name in a names array, printing its index using a for loop and string interpolation.
Build a rock, paper, scissors game in C# using a moves array and random computer choice. Validate user input with a while loop and determine win, lose, or tie.
Use while, do-while, and for loops to restart a game by asking the player to play again, with input validation and a boolean flag to control repetition.
Explore how to implement bulls and cows: generate a four-digit secret with unique digits, compare guesses to reveal balls and calls, and guide players toward the correct number.
Generate a four-digit, non-repeating secret number by building it as a string with random digits. Use a while loop to avoid duplicates, and include a debug reveal for testing.
Get and validate a four-digit player guess (leading zeros allowed) using a while loop, checking length, all digits, and no repetition, and re-prompt until the input is valid.
Compare the player's guess to the secret number using a for loop, count balls and calls, and provide feedback or win messages within a robust game loop.
Learn how to define and call functions in C#, creating static void functions, using main as the entry point, and chaining calls to print messages and run the game.
Master how functions take arguments, specify types and names, use optional defaults, and return values with return statements; apply to printing, looping, and simple computations like squaring a number.
Learn to simplify the bulls and cows game in C# fundamentals for game development by encapsulating logic into dedicated functions like generate secret number and get player guess.
Explore how to pass a function as an argument in C# using System.Action, call it inside a wrapper, and compare pass by value versus pass by reference.
Examine pass by reference in C# with ref and out, compare value-returning versus in-place increment, and apply it to a rock-paper-scissors game.
Learn to build a rock, paper, scissors game in C# using reusable functions: generate a random computer move and validate the player's input against valid options, returning the move index.
Finish the rock-paper-scissors game by refactoring logic into reusable functions and comparing indices for ties. Improve input handling with a get user input function and emphasize clean, single responsibility code.
Review core programming fundamentals—variables, operators, arrays, if statements, loops, and functions—as building blocks for reading, manipulating, and outputting data.
Explore object oriented programming by defining a custom type 'player' with a class, bundling name, level, health, mana, and inventory as member variables, and access instances with dot notation.
Explore the basics of classes with member variables and functions, learn public and private protection levels, and see how to access members via dot notation in C#.
Explore why public and private access matter in class design, using a car analogy to show encapsulation and a clean public interface, with a gun as homework.
Explore public and private data in C# through a gun class, using getters, setters, and properties to protect ammunition and clips, and introduce inheritance to reduce duplication.
Explore inheritance and polymorphism by modeling a weapon hierarchy, showing how cannon and ball inherit from weapon, enabling code reuse and a single make weapon shoot example.
Discover how virtual functions enable polymorphism and how to override them in C# for different weapons. Call base and override to ensure correct behavior across weapon types.
Discover how abstract classes prevent meaningless base objects, enforce overriding abstract methods, and use constructors to set initial ammunition for weapon hierarchies.
Learn how constructors initialize object instances in C#, using weapon, cannon, and ball with parameterized and default constructors, invoking base constructors, and overloading for flexible creation.
Discover destructors in C#, how the garbage collector destroys objects in a managed language, and when forcing collection with GC.Collect matters.
Build a text-based adventure in a C# project by designing level and option classes with a narrative and options, allowing navigation between levels via user input.
Implement the run function to print the level narrative and display options in a bracketed format. Validate player input to select the corresponding level and then run the next level.
Harness C# fundamentals for game development to build a text-based adventure using classes, levels, and recursive cross-referencing of options for dynamic player choices.
Learn how static classes organize multiple games inside an adventure game, allowing direct access to methods like treasure hunter without creating instances.
Summarize delegates and events in C# for game development by decoupling the player class from game logic. Learn to use an event to trigger game over and manage subscriptions safely.
Compare struct and class in C#, highlighting when to use value types for data and reference types for functionality, using memory behavior and constructors illustrated in a game example.
Discover how interfaces generalize shared functionality in C# by using a sound maker interface for dogs and robots, enabling reference via the interface type and avoiding multiple inheritance issues.
Learn generics in C# for game development, from function overloads and generic methods to constraints with IComparable, and implementing generic classes like a value holder.
Learn to create and manipulate lists in C#—an array-like collection with zero-based indexing, foreach loops, and operations like add, remove, contains, and remove all via predicates and lambdas, plus sort.
Explore dictionaries in C# by mapping employee names to salaries, access values via keys, and perform safe operations with contains key, try get value, add, remove, and iterate.
Learn how to replace a custom option class with a dictionary in a C# game, expose a simple add option method, and use enumerators to access entries.
Discover how the IEnumerable interface enables for each iteration and collection initializers by implementing get enumerator, move next, and current in a custom list.
Learn to mimic a d list by building an internal array, tracking count and capacity, expanding by 16 when full, and implementing a custom enumerator for foreach.
Explore how yield return creates an enumerator to drive a dynamic list in C#, using move next and current, with for-each iteration and a functional indexer.
Celebrate finishing the first installment of the complete game development series, the C# fundamentals, and prepare for real game development with upcoming projects like the infinite runner game.
This course is the first installment of the Complete Game Development Series and is dedicated to helping beginners get up to speed with coding and game development. The course covers all fundamentals of C#, the essentials of programming, good coding practices, and many advanced language features.
Basic programming concepts like variables, Operators, Containers, Flow Control, Inputs, and Functional Programming are thoroughly explained and practiced. Object-Oriented Programming concepts like Classes, Constructors, Destructors, Protection Levels, Inheritance, Polymorphism, and struct are demonstrated in depth. Advanced topics like Interfaces, Delegates, Generics, Enumerable, and Data Structures are also covered to ensure the student has deep knowledge of the inner working of the facilities of C# and are equipped to start jumping into game development with confidence.
The course includes various challenges and text-based game projects to explain general programming patterns. Projects are often created first and refactored when new concepts are introduced, helping students see the application and significance of every language feature, and are encouraged to apply these concepts further. Good programming practices are also constantly being introduced and applied to consolidate the student’s coding skills.
After taking the course, students walk away with a deep understanding of C# and programming, and solid coding skills.