프레임워크 안쓰고 리눅스에서 GUI 프로그래밍 하려면 어떻게 하죠?

fastwater의 이미지

음... 학교 프로젝트 수업 개요를 들어보니 라이브러리 사용 제한 한다던데
전 그냥 GUI 쪽은 MFC 조금 깨작 깨작 만져본 정도입니다. 제대로 공부한것도 아니고 그냥 미로찾기 하나 만들고 잘 돌아가네? 하고 맛보기만 봤습니다.
일단 리눅스+시스템콜+소켓프로그래밍이 기본조건이라 당연히 MFC는 못쓰고, 인터넷에서 찾아보니 QT라는게 있네요.

라이브러리 쓰지 말라고 했으니 아마 그 말은 프레임워크 쓰지 말라는 소리 같은데... 그럼 QT도 당연히 제외네요.

'일반적인' 대학교 3학년 레벨로 프레임워크 없이 간단한 네트워크 게임을 만드려면 뭐를 공부해야 할까요?

ddoman의 이미지

Quote:
라이브러리 쓰지 말라고 했으니 아마 그 말은 프레임워크 쓰지 말라는 소리 같은데... 그럼 QT도 당연히 제외네요.
일반적인' 대학교 3학년 레벨로 프레임워크 없이 간단한 네트워크 게임을 만드려면 뭐를 공부해야 할까요?

X-window system 자체가 프레임워크고, 라이브러리입니다.
OpenGL, DirectX도 프레임워크고, 라이브러리입니다.

리눅스에서 프레임워크 안쓰고 GUI 프로그래밍 하는 방법은 OpenGL이나 X-window 같은넘들을 직접 구현하시면 됩니다.
대학교 3학년 과목에서 가르치는 지식수준만으로, OpenGL이나 X-Window를 구현하는것은 사실상 불가능해보입니다. 성공하시면 꼭 kldp.org에 포스팅 해주세요.

JuEUS-U의 이미지

리눅스는 윈도우처럼 UI를 커널에서 관리하는게 아니라서 (윈도우가 기형적인거죠...)
라이브러리를 통하지 않고서는 불가능합니다....랄까
framebuffer를 직접 다루는 방법도 있지만 그런 비현실적인 이야기가 요구조건일리가 없습니다 - _-)...

ifree의 이미지

우분투와 미고에서 도입한다는 차세대 디스플레이 서버 프로토콜인 wayland 는 UI 코드가 커널에 들어간다고 하네요.
성능상으로 보면 이게 더 나을지도.

36311의 이미지

교수님한테 전화해 보시던가 작년에 수업들은 사람에게 문의하셔요.

* 포럼 주제와 무관한 신변잡기를 반복해서 올리지 맙시다.
* 질문 게시판 만이라도 익명 글쓰기를 막아야 한다고 생각합니다.

나빌레라의 이미지

위에분 말씀대로 리눅스에서 GUI를 라이브러리 없이 하라는건 프레임버퍼를 직접 제어하라는건데
이건 대학교 3학년 수준이 아닙니다.
(일단 프레임버퍼가 뭔지 이해하는 대학3학년이 몇명이나 될지...)

만약, 과제의 조건이 바뀐다면,
gtk나, qt를 이용해서 만들면 됩니다.

----------------------
얇은 사 하이얀 고깔은 고이 접어서 나빌레라

CromShield의 이미지

리눅스에서 프레임 버퍼를 직접 다룬 적은 없고, ms-dos 환경에서 video ram을 직접 다루어 게임을
만들어 본적은 있습니다.

위 두 가지의 차이가 많이 나는지는 제가 알지는 못하지만, 기본적인 개념은 같다고 봅니다.

제가 대학교 1/2학년때 C와 어셈을 통해 게임을 만드는 수업이 있었는데 대부분이 위 방법을 이용해 그림을 그리고,
키보드 인터럽트 벡터를 가로채 다중 키를 구현도 했습니다.

그리고 예전 게임 만들기 붐을 겪은 세대들은 프레임을 많이 이해하실것 같습니다.

나빌레라의 이미지

네, 저도 대학교 1학년때 어셈블리어로 비디오램에 직접 점찍어서
게임을 만들어봤었습니다.

하지만 지금 대학생들은 예전 대학생들하고 많이 다르더라구요.
직설적으로 말해 실력이 형편없습니다.
잘하는 아이들도 있겠지만 평균적으로 하향 평준화된것으로 저는 판단됩니다.

그렇다고는 해도,

제가 후배 대학생들을 무시한걸 수도 있겠지만,
만드는 방법을 잘 가이드 받고
절차를 교육받는다면 가능하긴 하겠네요..^^;

----------------------
얇은 사 하이얀 고깔은 고이 접어서 나빌레라

JuEUS-U의 이미지

딱히 복잡한게 아니라 제대로 된 문서가 없습니다.
커널 문서에서도 그냥 mmap, ioctl 쓰라고만 나와있지 그 외에는....
linux/fb.h를 들여다보면 어느정도 눈에는 보입니다만,
오랜기간 다뤄온 사람들조차도 단순히 감으로 짠다는 말이 나올 정도라서...

warpdory의 이미지

컴공이 전공이 아닌 저도 그 정도는 예전에 많이 해 봤었습니다.
초등학교때 애플 2 가지고 시작해서 msx 에서도 많이 해봤었고, 그 이후 ibm pc 로 넘어와서도 많이 하던 짓이죠.

문제는, 현재는 컴공 전공자도 저정도 되는 걸 직접 해본 사람이 별로 없다는 거죠. 위에 나빌옹 말씀대로 말이죠.

외주 줄 때마다 아주 환장할 노릇입니다. 스펙은 무지하게 높은데, 정작 불러다 놓고 시켜 보면 ctrl-c, ctrl-v 해 놓고 자기 실력이라고 우기는 경우가 80% 이상입니다.


---------
귓가에 햇살을 받으며 석양까지 행복한 여행을...
웃으며 떠나갔던 것처럼 미소를 띠고 돌아와 마침내 평안하기를...
- 엘프의 인사, 드래곤 라자, 이영도

즐겁게 놀아보자.

sephiron의 이미지

그 교수님(조교?)님은 gtk, qt만 라이브러리의 범주에 넣으신 듯... X api를 사용하시면 되시겠네요.

madhatter의 이미지

텍스트 머드 게임도 생각해 볼 수 있겠습니다.

poplinux의 이미지

프레임 버퍼 쓰라고 하는게 맞는 것 같습니다. 학부 수준에도 충분히 할 수 있는 수준이니 큰 걱정하실 필요 없을 것 같습니다.

혹시 정보 필요하시면 연락 주세요.

========================
조직 : E.L.D(Embedded Linux Developer/Designer)
블로그 : poplinux@tistory.com
카페 : cafe.naver.com/poplinux

임베디드 리눅스 관련 프리렌서 지향

fastwater의 이미지

왠지 프레임 버퍼?를 직접 쓰는건 아닐꺼 같네요. QT 사용 가능한지 다음 시간에 조교분한테 물어봐야겠습니다.

emptynote의 이미지

교수님이나 조교님께 QT, GTK 같은 구체적인 예시를 들어

확실한 가이드 라인을 확정하는것이 좋을듯하네요.

더불어 조금 한보 더 전진하여 교육 목적을 빨리 알아내고 이해를 했다면,

스스로 가이드 라인이 생기겠지요.

수업의 목적이 예를 들면 sys/socket.h 정도의 C 라이브러리를 이용한 네트워크 이해인데,

QT, GTK, boost Asio 등을 쓴다고 하면 수업을 진행하는 분 입장에서는 힘빠지지요.

그래도 이럴 경우 QT, GTK의 네트워크 부분을 제외한 순수 GUI 부분만은 허용해 주시겠지요.

익명 사용자의 이미지

숙제를 낸 사람도 뭔가 명확한 개념이 없는 듯... 갑자기 어느 대학교인지 궁금해지네요... 학생들이 아주 그냥 고생들이시네.

fastwater의 이미지

fastwater의 이미지

일단 과제는 아니고 수업 자체가 프로젝트 수업이에요. 일단 수업의 목적 자체는 소켓+시스템콜을 이용하여 실제로 '의미' 있는 프로그램을 설계 하는게 목적입니다. 어떤분이 라이브러리 사용에 대해서 물었는데 라이브러리 사용을 '어느정도' 제한 한다고 했는데 뉘앙스가 qt 같은 것도 제한 하는 걸로 들렸거든요. 명확한 기준은 다음 수업시간에 알려주신다고 했으니 다음 수업 때 확실하게 알아낸 뒤 프로젝트 설계를 시작해야겠네요.

익명 사용자의 이미지

라이브러리를 사용하지 않고 만드는 조건이라면...
libc 는 사용해도 되는지 물어보세요.

리눅스에 있는 gtk 같은 것들(GUI Toolkit)이 xlib 같은 저수준의 라이브러리로 구현한 것들입니다.
xlib, gtk 사용해도 되는건지를 물어보세요.

Qt, GTK 는 프레임워크가 아닙니다. Qt, GTK 는 GUI Toolkit 입니다.
프레임워크로 부를 만하려면 glade 정도가 되어야겠죠.

galien의 이미지

HTML을 사용해서;;;;;

권순선의 이미지

텍스트만으로 만들 수 있으니 이것이 정답!

Ohyung의 이미지

html5로 움직이게 할 수 있군요...

오오.. 괜찮은 방법같습니다 ㅎㅎ

카二리의 이미지

제 생각에 교수 생각은
그냥 curse를 안쓴 CUI(Text Console UI)를 원하는게 아닌가 싶은데요.

그정도는 대학교 3학년이면 능히 짤수 있을만 하니깐요.

그리고 설령 진짜로 프레임버퍼를 사용해서 프로그래밍 하라는 것도.
대학교 과정 중에 임베디드 리눅스 같은 수업이 먼저 있었다면 이해가 갑니다.

사실 프레임버퍼가 어렵다고 해도 매우 특정한 간단한 프로그램만 만드는데
미리 수업에서 프레임 버퍼에 대해 알려 줬다면, 대학교 3학년 수준에서 못할만한 수준은 아닙니다.
어려울 지언정 할만 해 보이네요.

새 생각 :)

creativeidler의 이미지

프레임버퍼 직접 쓰는 건 "로우 레벨"인 거지 "어려운" 게 아닙니다. 근데 그게 "의미 있는" 건지는 잘 모르겠습니다.

cinsk의 이미지

일단 수업의 목적 자체는 소켓+시스템콜을 이용하여 실제로 '의미' 있는 프로그램을 설계 하는게 목적입니다. 

그럼 라이브러리 사용을 제한한다는 것이, 소켓 + 시스템 콜을 편하게 해 주는 라이브러리 사용을 제한한다는 말이 아닌가요? 그럼 GUI toolkit 같은 것은 써도 무방할 듯.. 라이브러리가 한 두 종류가 아닌데, 어떤 라이브러리 사용이 제한되는지 조교에게 물어보세요.

익명 사용자의 이미지

교수의 의도가 무엇인지 꼭 알려주시기 바랍니다. 궁금해서 신경쓰입니다.