22년도 1학기 병렬프로그래밍 기말 프로젝트에서 우리 팀은 콘웨이의 생명 게임을 CUDA로 구현해보기로 했었는데

만들어서 CPU에서 돌리는거와 커널에서 돌리는 시간 차를 발표했었다. 본인은 이것만 하기에는 인터넷에 좀 흔한 프로젝트 주제로 알려져있고 그래서 위에서 언급한거 외에 커널에서는 콘웨이의 생명 게임을 기반으로 N*N 크기의 맵에서 계속 생명게임이 진행되어 한 칸에 해당하는 세포가 살았다가 죽었다가 반복하는데 

 

여기에 플레이어가 추가 되어 제한 시간동안 방향키를 입력해 플레이어를 움직여 살아있는 세포를 먹으면 점수가 쌓이는 그런 게임을 만들어보면 어떨까 생각해서 개인 시간동안 짧고 무식하게 만들어봤다

원래 게임을 만들기 위해서는 객체별로 프로그래밍하고 더블버퍼등 사용해서 고급지게 만들어야겠지만 저때는 앞에 말한 내용도 잘 모르는 상태였고 급하게 만든것임을 밝힘

 

코드 : https://github.com/soonsoo3595/Parallel_CUDA/blob/main/Play.cu

 

GitHub - soonsoo3595/Parallel_CUDA: Parallel Programming using CUDA

Parallel Programming using CUDA. Contribute to soonsoo3595/Parallel_CUDA development by creating an account on GitHub.

github.com

 

 

간단하게 그냥 설명하자면

-1은 벽, 0은 죽은 세포, 1은 살아있는 세포, 2는 플레이어인데 처음 시작 위치는 벽을 제외한 맨쪽 왼위이다.

 

1초에 한번씩 맵이 렌더링된다. 근데 이게 좀 무식하게 구현하다보니까 깜빡거리고 키보드 입력을 받으면 입력버퍼에 저장되고 1초에 한번씩 꺼내지는것같아서 키입력이 느리게 받아진다고 느껴진다. 

 

그리고 플레이어는 살아있는 세포로 취급되어져서 생명 게임 규칙에서 살아있는 상태로 판정되어 다음 주기의 생명 게임이 그려진다.

 

 

그러나 이 것은 발표에 쓰이지 않았다 주제랑 맞지않는다고 생각해서 제외되었기때문 ㅜㅜ 아쉽긴하지만 그냥 취미로 만들어봤다 정도로 간직하려고한다

 

소프트웨어 공학 기말 발표로 자유주제로 애플리케이션이나 웹, 게임 등을 만들어서 소프트웨어 공학 시간에 배운 내용을 바탕으로 내가 속한 팀은 웹페이지를 개발하기로 했다.

Web.zip
5.59MB

 

 

주제는 시중에 있는 친구 찾기, 연인 찾기 등 사람끼리 매칭시켜주는 관계 맺기(?)를 학교 내로 적용하면 어떨까 해서 만들어 봤다. 예를 들어 이 웹사이트에 건국대학교 학생들이 가입을 하고 사진을 업로드해서 자신을 표현할 수 있고, 다른 사람의 프로필을 볼 수 있고, 그 사람한테 쪽지를 보낼 수 있고, 익명 게시판이나 익명 채팅방에서 사람들간 소통을 할 수 있는, 그런 기능들을 만들었다(약 한 달 가량의 시간 밖에 없었고 다른 프로젝트도 있어서 더 풍성하게 할 시간은 없었음)

 

웹을 만들어 다른 사람들에게 서비스를 할 수 있게 하려면 웹 서버를 만들어서 다른 사람들의 데이터베이스를 저장하고 그 데이터베이스를 기반으로 클라이언트들에게 서비스를 해줘야 한다.

 

그래서 우리 팀은 nodejs와 mysql을 이용했다. 그리고 코드 편집기는 VSCode 사용, 작년에 데이터베이스 강의를 들으면서 기말 과제 제출로 nodejs를 이용해서 데이터베이스 연동까지 다뤄본 경험이 있기에 이 경험을 이용하기로 했다. 

물론 짧은 시간안에 완성하긴 쉽지 않아서 구글링을 하고 웹프로그래밍 책을 빌려서 겨우겨우 완성할 수 있었다. 

 

웹서버를 만들어서 서버를 구동하고 실행시키는 것 까지는 성공했는데 여기까지하면 서버를 실행시킨 내 컴퓨터에서만 서비스를 이용할 수 있다. 그래서 localhost를 다른 사람들도 들어올 수 있게 하기위해서 찾아본 방법이 localtunnel을 이용해서 무료로 도메인을 설정해 서비스 할 수있게 하는 방법을 찾았다. 그 결과 발표시간에 다른 학우들이 들어와서 체험할 수 있었다.

 

대충 내용은 여기까지만 적고 사실 파일을 올리기 위해서 이 글을 적게 되었다. 왜냐면 깃허브에 전체 폴더 올리는걸 1시간 가량 시도하다가 실패했기에... 깃허브 너무 어렵다.... 

 

이걸 실제로 실행시키는 사람은 없겠지만 나중에 내가 까먹을까봐 적어놔야겠다.

먼저 웹 전체를 실행시키기 위해 KungDak 폴더의 bin 폴더 그리고 www 파일을 누르고 F5를 누르면 실행이 된다.

그리고 터미널에서 cd/web-chat으로 폴더 옮겨주고 node app.js를 쳐서 채팅 서버를 실행시킨다.

왜 이렇게 했냐면 필자는 채팅 서버를 제외한 웹 페이지 전반적인 것을 다 구현하고 다른 팀원이 채팅 서버를 따로 만들어서 하나의 서버로 구현하고 싶었지만 시간이 없어서 서버를 두 개 둔 것이다.

여기까지 하고 localhost:3000 으로 접속하면 홈페이지가 나온다. 

도메인 설정도 따로 해줘야 다른사람들이 들어올 수있는데 여기선 그냥 생략하겠다. 

 대충 터미널에서 폴더 옮기고 lt --port 3000 --subdomain kungdak를 치고 웹에서 kungdak.loca.lt 치면 드가짐

 

이제 웹 구현 결과를 조금만 보여주자면

 

로그인

 

 

홈페이지

 

 

마이페이지
내가 보낸쪽지함
익명게시판

 

 

 

 

이정도만 올리겠다. 

막상 웹 페이지 개발에는 열심히 했지만 발표를 좀 많이 못했다 교수님한테 지적도 받고 ㅠㅠ 소프트웨어공학에 맞게 배운 내용을 발표에 넣었어야 했는데 그냥 웹페이지만 소개하고 끝나서 좋은 학점은 받지 못할 것 같다 ㅠㅠ 역시 팀플은 어렵다

아 그리고 파일 올려도 데이터베이스 설정하고 그래줘야하기에 솔직히 다른 컴퓨터에서 실행은 어려울 것 같다! 그래서 사실 이 글은 나의 일기라고 결론 지어도 될듯? 

 

 

후기를 쓰자면, 사실 시간이 없어서 좀 힘들긴 했지만 하면서 재미는 있었다. 사실 웹프로그래밍을 본격적으로는 처음 해봤는데 프로그래밍 결과가 눈에 잘 드러나니까 재밌달까 뿌듯하달까 싶었다. 게임프로그래밍 하면서 남는 시간에는 웹프로그래밍에 손 대볼까 한다. 

 

 

 

'공부 > 학교팀플' 카테고리의 다른 글

병렬프로그래밍(CUDA) 이용한 간단한 게임  (2) 2022.06.29

+ Recent posts