Nephrite21

게임 프로그래밍 언어로의 C# 본문

개발자의 생각

게임 프로그래밍 언어로의 C#

Nephrite21 2023. 4. 2. 08:09

게임 프로그래밍을 하는 데 필요한 언어는 Unreal에서 사용하는 C++Unity에서 사용하는 C#이 주류를 이루고, Phython, Lua, Javascript 등의 스크립트 언어도 사용하는 경우가 있다. 하지만 스크립트 언어의 경우에는 로딩 및 실행 속도가 C/C++에 비해 느리고(binary 실행 파일이 없는경우가 많으므로), 시스템을 구현하는데 제약이 존재한다. 따라서 대부분의 경우에서 C++C#를 사용하는데, 그 중 C#에 대해서 자세히 알아보겠다.

 

1.C#

C#의 개발 동기

C#2000년도에 Anders Hejilsberg 의해 개발된 언어이다. 그때 당시 큰 프로그램을 제작하는 데 C의 한계가 있었고, 이를 보완하기 위해 객체지향의 C++이 개발되었다. 하지만 C++은 언어의 이식성이 부족하다고 여겨졌고, 이를 보완한 Java가 나타났다. 이러한 상황에서 C# Java에서 부족하다고 여겨진 다른 프로그래밍 언어와의 상호 운용성을 보완하기 위해 만들어졌다.

 

C# Design Philoshophy

  •   It is intended to be simple, modern, general purpose, and object oriented programming language.
  • It should include strong type checking, array bound checking, detection of attempts to use uninitialized variables, source code portability and automatic garbage collection.
  • It is intended for use in developing software components than can take advantage of distributed environments.
  • As programmer portability is very much important, especially for those programmers already familiar with C & C++, C# is best suitable.
  • Provide support for internationalization, as it was very important.
  • It is intended to be suitable for writing applications for both hosted and embedded systems.

위에서부터,

  1. C#은 심플하고 모던하며 특정 목적으로만 사용이 아닌 일반 프로그래밍 언어이며, 객체 지향적 언어이다.
  2. C# strong type checking, array bound checking, uninitialized된 변수들의 사용 감지, 소스 코드의 이식성과 자동 garbage collection을 포함해야 한다.
  3. C# distributed 환경에 맞는 software component를 개발하기 위한 목적을 가지고 있는 언어이다.
  4. 개발자 유입이 중요하므로,C C++를 아는 개발자들이 쉽게 사용할 수 있도록 C#을 만들어야 한다.
  5. 국제화가 굉장히 중요하므로 C#은 이에 따른 서포트를 제공해야 한다.
  6. C# host embedded 시스템에서 사용하는 모든 프로그램을 작성하는 것을 목적으로 가지고 있는 언어이다

 

정리하자면 범용적으로 사용될 수 있는 객체 지향적 언어라고 볼 수 있다.,

 

C#의 장점과 단점

 장점:

-       코드의 이식성(OS에 구애를 덜 받음)

-       엄격한 문법 (암묵적 오류 방지)

-       메모리 관리(garbage collection)

-       다양한 라이브러리

단점

-       속도(.Net framework를 통해 작동 -> 속도 저하)

-       매크로와 템플릿 사용 불가능(C++에 비해 제한사항이 많음)

-       게임 개발 방면 이외에는 user 수가 적어서 자료 양이 적음

 

C#을 이용해 만든 프로그램들

C#을 이용해서 만드는 프로그램으로는 윈도우 데스크톱 애플리케이션/ 웹 애플리케이션/ 모바일 앱 개발/ 인공지능/빅데이터 등등이 있을 수 있지만, 게임 개발자를 희망하는 나는 게임 개발 쪽으로의 C#프로그램에 대해 알아보겠다.

1.Unity

유니티는 3D2D게임 개발용 게임 엔진으로, 언리얼 엔진과 더불어 게임 개발 분야에서 손꼽히는 게임 엔진이다. 멀티 플랫폼을 매우 활발하게 지원중으로, 윈도우,MacOS,,,콘솔 등에서 작동하는 프로젝트를 만들 수 있고, 지원 영역도 확장중이다. 또한 오픈소스는 아니지만 취미로 이용 시에는 무료로 사용 가능하다.

2.Godot

고도는 OKAM에서 만든 게임 엔진으로 MIT 라이선스에 따라 완전 무료로 배포되었다. 메인 언어는 GDScript라는 전용 언어이지만 C#과 추가로 C++도 지원한다.

3.Stride

스트라이드는 실리콘 스튜디오에서 개발한 게임엔진으로, 유니티와 유사하며, 완성도가 높다고 한다. 2018MIT 라이선스로 변경되어 오픈소스화 되었다. 이 엔진 또한 사용료는 무료이며, 로열티도 없는 형태로 배포중이다.

 

 

 

 

출처:

[TheCompleteReference C# 4.0]

https://memberfiles.freewebs.com/02/83/78118302/documents/McGraw.Hill.CSharp.4.0.The.Complete.Reference.Apr.2010.pdf

[C# Roadmap]

https://github.com/dotnet/roslyn/blob/main/docs/Language%20Feature%20Status.md

 

'개발자의 생각' 카테고리의 다른 글

게임 개발에서의 Agile에 대한 고찰  (0) 2023.04.02