비전공자 & 입문자를 위한 게임 개발! C# 프로그래밍 입문으로 게임 개발의 첫걸음을 떼보세요.
강의 소개 📝
게임을 만들기는 지금까지 아주 어려운 일로 인식되어 왔습니다. 하지만 유니티와 같은 게임엔진의 발전으로 이제 1인개발자도 게임을 개발하는 것이 가능해졌습니다. 유니티 게임엔진을 배포하는 유니티 테크놀로지는 다음과 같은 캐치프라이즈를 내걸고 있습니다.
“배우기 쉬운 게임엔진”
하지만 비전공자들에겐 이것은 그림의 떡입니다. 게임엔진을 통한 게임 개발에 꼭 필요한 핵심 능력이 있기 때문입니다. 바로 프로그래밍입니다. 프로그래밍 기술이 없이는 게임을 만들수 없습니다. 또한 프로그래밍은 배우기 아주 난해합니다. 배우기 쉬운 게임엔진이라는 캐치프라이즈는 원래 게임을 개발하던 이들에게 적용되는 문제입니다. "배우기 쉬운" 이라는 요건을 충족시키기 위해서는 프로그래밍의 능력이 절실히 필요합니다.
그러한 문제를 해결하기 위해 이 강좌를 만들었습니다. 게임개발에 앞서 유니티에만 필요한 기능을 소개하면서 유니티로 학습해 나가는 C# 프로그래밍 강의입니다.
비전공자는 게임을 개발하기 시작하면 방대한 양의 공부를 해야 합니다. 우선 프로그래밍입니다. 유니티의 기능도 필요합니다. 어느 정도가 필요한지 알 수 없기에 무조건 배웁니다.
C#의 경우도 같습니다. 책에 있는 C#의 기능을 학습하려면 방대한 분량의 학습이 필요합니다. 하지만 그렇다고 너무 적은 부분을 공부하면 원리를 모르기 때문에 응용이 불가능합니다. 인터넷에 있는 짧은 시간의 C# 강의를 따라서 배우고 공부할 수 있는 사람은 개발자들 뿐입니다. 프로그래밍에 입문하기 위해서는 기초가 되는 프로그래밍의 원리부터 학습해야 그것이 가능합니다.
이 강의는 유니티의 게임개발에 필요한 기초적인 C#을 배우기 위해 컴퓨터의 기초적인 원리부터 학습합니다. 초보자라도 이 강의의 학습을 완료하신다면 다른 게임개발의 강의들을 쉽게 공부할 수 있을 것입니다. 그래서 다른 프로그래밍 강좌와는 다르게 문법의 원리를 알아보기 위해 내부적인 구조를 조금씩 확장하여 설명합니다. 굳이 어려운 문법을 사용하지 않아도 프로그래밍은 학습이 가능합니다. for 문과 if 문과 함수만 배워도 프로그래밍은 가능합니다.
그래서 이 강의에서는 유니티의 기능과 C#의 구조지향적 프로그래밍을 같이 이해하고 실습하는 내용이 강의 분량의 절반을 넘어갑니다. 객체지향은 중반 이후에 나옵니다. 기본적인 로직을 작성하기 전까지 프로그래밍을 작성할 수 없기 때문입니다. 고급문법의 강의를 배워야 할 시점은 게임을 하나라도 만들고 나서입니다.
비전공자들과 입문자들이 게임개발의 전 단계인 프로그래밍을 어떻게 학습할 수 있을지에 대해 알려드리기 위해 이 강의를 제작했습니다.
왜 배워야 하는지 ✒️
본 강의는 유니티의 C# 프로그래밍에 대한 내용을 비전공자들과 입문자들의 입장에서 어떻게 접근할 수 있는지알려주는 강의입니다. 그렇다고 쉽지만은 않습니다. 예를 들어 if문과 for문을 설명할때 메모리가 동작하는 예제를 설명하고 나서 이것을 프로그래밍으로 작성하는 방법을 같이 설명합니다. 비슷한 구조의 작은 예제를 소개하는 것을 보시면 이걸 왜 해야 하는 것일지에 대한 궁금증이 들 수도 있습니다. 하지만 프로그래밍은 컴퓨터의 내부 원리를 이해하고 컴퓨터에 말을 거는 작업입니다. 내 말대로 컴퓨터가 동작하기 위해서는 메모리가 어떻게 동작하는지를 알아야 문법을 작성할 수 있습니다. 다른 사람에게 말을 하기 위해서 다른 사람의 생각을 역지사지하는 것과 똑같습니다.
그리고 그것이 가능해야 디버깅이 가능해집니다. 프로그래밍은 원래 고난과의 싸움입니다. 얼토당토 하지 않은 말도 안되는 오류가 나올수 있습니다. 이러한 문제를 해결하기 위해서는 기초가 필수적입니다.
입문자분들이나 초보자분들의 경우에는 기초 C# Part 2 내용을 모르면 이 다음강의인 Part3 인 유니티로 시작하는 슈팅게임개발 강의의 수강이 어렵습니다. 하지만 이 강의를 배우고 나면 학습이 가능합니다.
언어를 배우기 전에 원리부터 학습합니다. 원리를 알면 응용이 가능합니다. 이해를 하지 않고 따라하기만 하면 프로그래밍을 할 수 없습니다. 강의당 10분의 학습시간을 넘지 않습니다. (넘는 강의도 있습니다만 넘어도 된다고 생각하기에 그렇게 제작했습니다. 길어서 학습에 방해가 된다고 생각하면 나누거나 다시 찍도록 하겠습니다)
이 강의에서 배우는 것들 ✏️
유니티의 기능을 사용하여 C# 언어를 학습할 수 있는 환경을 배울 수 있습니다.
왜 프로그래밍이란 것이 존재하는지를 배울 수 있습니다.
코드 한줄 한줄의 의미를 분석하여 응용하여 작성할 수 있게 됩니다.
작성하는 코드의 메모리와 원리에 대해 설명합니다.
객체지향을 설명하기에 앞서서 메모리 구조를 설명하기에 명확하게 객체지향을 이해할 수 있습니다.
구조지향과 객체지향의 차이를 이해하고 사용할 수 있습니다.
강의 특징 💡
C#의 메모리구조를 살펴보면서 실제 C# 언어의 기본 문법을 학습하고 간단한 콘솔 프로그래밍을 개발하여 구조지향과 객체지향의 프로그래밍을 습득하는 것을 목표로 합니다.
이 강의를 듣고 나면 C# 언어의 내부 구조를 예상하여 개발 할 수 있게 됩니다. 다만 입문자의 경우 길게 잡고 하루 30분씩 꼭 연습이 필요합니다. 짧게는 2주에서 한달부터 길게는 3달까지 잡으시는 것이 좋습니다.왜냐하면 장기기억으로 쌓여야 이것이 당연한 것이 되어 생각한 대로 프로그래밍을 할 수 있게 됩니다. 유니티에 접근하는 초보자들이나 비전공자들에게 큰 도움이 될 것으로 생각합니다.
현재 강의는 약 10시간 분량이며 110개 정도의 강의로 이루어져 있습니다.
요구 사항 💡
PC를 사용할 줄 알아야 합니다. (폴더와 단축아이콘의 의미를 이해할 수 있어야 합니다.)
영어에 대한 두려움을 없애야 합니다. (용어의 설명을 위해 필요한 내용입니다. 필요한 내용은 설명합니다.)
프로그래밍 경험이 없어도 관계 없습니다. (프로그래밍을 아무것도 모른다고 가정하고 시작합니다, 정말 모르실 경우 이전 강좌인 Part 1의 컴퓨터 구조강의를 듣고 오시는 것이 좋습니다.)
섹션마다 간단한 소개 📖
섹션 0: 유니티 기본 기능 소개
유니티의 기본 기능을 소개하고 각각의 뷰들의 관계를 이해합니다.
통합개발환경의 의미를 이해할 수 있습니다.
프로그래밍을 시작하기 위해 최소한의 지식을 학습합니다.
섹션 1: 기초 C# 프로그래밍
프로그래밍과 소스코드의 관계를 이해할 수 있습니다.
콘솔이 무엇인지 왜 콘솔에 작업하는지를 설명합니다.
변수라는 것의 기초를 이해할 수 있습니다.
프로그래밍 학습방법 1을 소개합니다. 어떻게 학습할 수 있을지를 알아봅니다.
섹션 2: C# 자료형
데이터를 저장하는 자료형을 소개합니다.
자료를 전달하는 과정에 생기는 현상의 원리를 설명합니다.
평균을 구하는 것과 같은 간단한 프로그래밍을 학습합니다.
프로그래밍 학습방법 2를 소개합니다. (중요)
섹션 3: 조건문
구조지향적 프로그래밍의 기본인 조건에 따른 실행에 대해 학습합니다.
여러 if 문들중에 하나를 선택해서 사용하는 방법을 이해해야 합니다.
프로그래밍은 한가지 방법만이 존재하지 않는 것을 학습합니다.
섹션 4: 반복문
구조지향적인 프로그래밍의 기본인 반복에 대해 학습합니다.
반복문을 가지고 여러가지 프로그램을 작성합니다.
어떻게 하면 반복문을 쉽게 사용할 수 있을지를 학습합니다.
섹션 5: 함수
구조지향적인 프로그래밍의 기본인 함수에 대해 학습합니다.
왜 함수를 사용하고 어느 곳에 함수를 사용하는지를 학습합니다.
함수 내부의 메모리가 동작하는 방법을 이해하고 사용할 수 있습니다.
섹션 6: 유니티와 함수
객체지향을 학습하기 위해 함수와 객체지향의 관계를 이해할 수 있습니다.
유니티에서 사용되는 함수를 이해합니다.
메모리로부터 접근하는 객체지향을 이해하고 사용할 수 있습니다.
섹션 7: 유니티와 메모리
유니티에서 메모리가 사용되는 방식을 이해합니다.
변수와 함수로부터 객체지향이 생겨나므로 변수와 함수의 메모리부터 접근합니다.
객체지향을 접근하는 방법을 이해하고 사용합니다.
섹션 8: 구조체와 클래스
구조체와 클래스를 메모리를 통해서 학습합니다.
자료형을 새로 만든다는 것의 의미를 이해하고 사용합니다.
구조체와 클래스의 여러가지 사용방법을 학습합니다.
섹션 9: 클래스
구조체와 클래스를 메모리를 통해서 학습합니다.
자료형을 새로 만든다는 것의 의미를 이해하고 사용합니다.
실제 구조체와 비교하여 메모리 동작을 이해하고 객체지향의 이해의 관점을 학습합니다.
유니티에서 객체지향을 어떻게 사용할 것인지를 학습합니다.
섹션 9: 배열과 리스트
배열과 리스트를 사용하는 방법을 이해하고 학습합니다.
왜 어느곳에서 new 를 실행해야 하는지를 명확하게 이해할 수 있습니다.
함수내부와 클래스 내부에서 선언되는 배열의 메모리를 학습합니다.
여기서 다루는 툴 🧰
이 강의에서는 학습을 하시고 꼭 실습을 하시는 것이 좋습니다. 특히 비전공자는 평소에 프로그래밍으로 일을 하지 않기 때문에 그냥 보기만 해서는 절대 프로그래밍을 습득할 수 없습니다. 이해를 하시고 나서 필요한 핵심적인 내용을 암기하셔야 합니다. 그리고 실습해야 합니다.
에버노트를 사용하여 강의를 배울때 정리하는 법을 알려드립니다. 구글 스프레드시트를 이용하여 학습의 진행률을 볼 수 있는 방법도 알려드립니다. 간단한 내용들이지만 비전공자는 시간이 없습니다.(전공자도 마찬가지입니다) 최단 시간에 최적의 연습을 할 수 있는 방법을 설명해드립니다.
예상 질문 Q&A 🙋🏻♂️
Q. 비전공자도 들을 수 있나요? A. 네, 비전공자와 입문자가 들을 수 있도록 제작한 강의입니다. 전공자 분들에게는 조금 쉬울수도 있습니다만 메모리구조를 복습하는 차원에서도 들으시면 좋습니다.
Q. 이 "C# 프로그래밍"를 배우면 무엇이 좋은가요? A. 원리를 알아야 응용이 가능합니다. 프로그래밍을 하는 것만이 아닌 오류를 잡을 때도 원리를 알아야 응용을 할 수 있습니다. 프로그래밍을 할 때 오류가 생긴다고 해서 다른 누군가가 문제를 해결해주지 않습니다. 원리를 알고 나면 오류를 수정할 수 있습니다. 또한 이해가 깊어져서 응용이 가능합니다.
Q. "C# 프로그래밍"의 강의를 들으면 어떤 일을 할 수 있나요? A. 실제 유니티를 게임을 만들기 위한 준비가 가능합니다. 이 다음강의인 Part 3 의 슈팅게임개발의 강의를 들으실 수 있습니다. 또한 유니티로 다른 프로그램을 만들 때 큰 도움이 됩니다.
Q. 이 강의만의 특별한 장점이 있을까요? A. 처음 볼 때는 어려울 수 있습니다. 하지만 그 단계를 넘어가서 중반 이상 가게 되면 원리에 대한 개념이 생깁니다. 내부구조를 알면 컴퓨터가 어떻게 동작하는지 소스코드가 어떻게 동작하는지를 예상할수 있습니다. 그렇게 되면 프로그래밍뿐만 아니라 디버그의 실력도 향상됩니다. 오류가 있어도 해결할 수 없다면 그것만큼 힘든 일이 없습니다. 이런 상황을 예방하기 위해 원리와 메모리에 대한 공부가 필요합니다.
Beginners who are new to programming often vaguely understand other lectures because the explanations are vague, but at some point, they seem to understand the general idea, but they have to move on without fully understanding because they feel vague and uneasy. This lecture is completely different.
It uses visual image animations to help you understand the operating principles clearly. It also imprints them visually, so they are imprinted more easily in your head.
Other lectures also use visual images appropriately, but this lecture makes the visualizations uniquely outstanding. It is a fundamentally different visualization.
It is not just a few visualization images, but a visualization of the process itself.
To what extent is this? When interpreting code, the process is visualized in your head. Whether this works or not makes a huge difference. This is a result that I have not experienced in other introductory lectures before. This is probably because they kept the importance of this part in mind when planning this lecture. Otherwise, they wouldn't have spent time and effort implementing detailed animations that are overwhelmingly different from other lectures.
Also, it's a meticulous and excellent lecture that is designed so that even if you read the lecture once, you can naturally understand and imprint the key parts by repeating them multiple times. It feels like they designed it meticulously, even considering that beginners don't review properly. The effect is actually amazing.
Honestly, most of the other lectures that are said to be for beginners stopped after the middle part.
The reason is that in the beginning, it's too easy to understand everything, but from the middle part, there are parts that I don't understand little by little, so I understand the general idea, but the vague understanding piles up and accumulates.
Then, in the end, these things become a dagger, and from the latter part, I just follow along and copy the code without understanding what's being said. Even the instructors are mostly just like this in the latter half... For example, when explaining variable declarations in the beginning, the instructor explains them thoroughly as if they were beginners, but when explaining functions, which are new concepts, in the middle, they skip over the structure of functions and other things... No, functions are definitely new concepts, so they are important content that requires a solid understanding, but it's not like the explanation they gave to beginners in the beginning of the lecture. Students are still beginners until they finish the course, and the instructor may think that they will understand even if they don't explain things in detail, but in reality, beginners find the beginning of the course more difficult than the middle and latter half. However, as the lecture progresses, the instructor seems to want to wrap up the lecture quickly, and the lecture content becomes increasingly indifferent and far from being thorough... This is the pattern of most beginners' lectures.
Eventually, you reach a point where you get confused about why this is this and why that is that, and you start to give up at that point. For this reason, there are 3~4 lectures that I skipped in the beginning or middle.
I think it's because if they're not a good top-class instructor, it's hard to get a sense of how confusing many concepts or techniques that I take for granted are for beginners and how much detailed explanation is needed. It's completely different from what you're good at and how you teach others to do well, so I think most ordinary instructors miss these parts here and there without realizing it even when they give lectures for beginners. But what's scary is that, here and there, those gaping holes in your understanding will come back to you like a dagger later on, and you'll end up giving up.
In the end, those lectures weren't really for beginners. This is the first time I've seen a detailed lecture where beginners can really solidify the concepts.
Strangely enough, even beginners are still progressing while completely understanding the lecture without feeling uneasy because they're vaguely understanding it. It is qualitatively very, very different from the so-called beginner-level lectures I have taken before.
Students who have taken other beginner-level lectures and are listening to this lecture will feel to their bones how overwhelmingly excellent this lecture is and how fundamentally different it is,
and students who are taking this lecture for the first time will be proud, thinking that they have excellent abilities and understand the lecture content well. Haha
I only write reviews once or twice a year, but this is enough for me. I am grateful.
I just hope that this person will continue to upload more good lectures.
Thank you so much for your detailed and sincere course review.
It is true that I designed it as you said and adjusted the difficulty level.
I feel like I am really encouraged that you understand and understand it. ^^
It really helps me a lot, and I will continue to improve this course and make other better courses. Thank you so much.
I will revise and write more later.
Thank you.
It's true that seeing once is better than hearing a hundred times.
The Chinese idiom "seeing once is better than hearing a hundred times" is exactly right.
Since you draw the internal structure of the code with pictures and explain it one by one,
it's really easy to understand.
I wonder why there hasn't been a lecture like this before.
I will listen hard and learn well.
Thank you for creating a good lecture that helps me understand difficult content.
You will continue to upload good lectures, right? ㅎㅎ I will look forward to it.
Thank you.
This is a really good lecture for beginners or non-majors to start from the basics and build a solid foundation. Unlike other lectures, it doesn't teach C# grammar in order, but rather teaches how it works according to the computer memory structure in a very simple and clear way, making it easy to understand.
And each unit lecture is about 10 minutes long, so there is no burden in studying a day.
If you ask the teacher a question, you will get a quick answer or feedback, which is great. Above all, you can communicate on the topic of game development through various information and exchanges in the cafe the teacher runs, which is more motivating.
If you follow this curriculum steadily and faithfully, starting with the introduction to programming lecture, then the shooting game development lecture, and the prototype lectures that will be uploaded later, I am sure that you will become a proper individual game developer in no time.
Honestly, I think that it is rare to find a programming lecture that can be explained so easily to a non-major.
(I also started out as a non-major by developing an iPhone app with Swift) If I had started programming with this lecture,
I think programming would have felt much easier.
Should I develop a game as a hobby? I started lightly, but..
There are also many parts that are helpful for iOS development. (Game loop, memory structure, etc.)
I am really satisfied with this lecture that solidifies the basics.
I want to give it 10 stars, not 5 stars.
I started it simply as a hobby out of simple interest..
(I have now finished about 70% of the C# grammar in this lecture..)
I need to finish the next lecture quickly,
and make a shooting game and register it on the App Store. ㅎㅎ
Thank you so much, instructor :)
Thank you very much for the good review. There are still some lectures that I haven't finished yet, and I'm afraid the quality will be low if I upload them quickly, so I'm uploading them slowly. I'll try to upload them as soon as possible. Thank you, and I'll try to make more good lectures. ^^