Automated Testing (Android Game Developer Summit 2018)

XIN LIU : 안녕하세요 나는 NetEase 게임의 신화입니다

오늘 저는 Airtest 프로젝트에 대해 이야기 할 것입니다 차세대 자동화 테스트 팀 2 달 전 JDC에서 우리가 여기서 시작했습니다 오픈 소스 기반 프로젝트 여기 얼마나 많은 사람들이 그것에 대해 들어 봤습니까? 오

꽤 많이 승인 오늘 저는이 세 가지 주제에 관해 이야기 할 것입니다 테스트에서의 도전 과제, Airtest 프로젝트 이러한 문제를 해결하는 데 도움을 줄 수 있습니다 그리고 또한 더 큰 규모의 실제 장치의 내부 우선 순위 테스트

그래서 첫 번째 문제는 우리가 너무 많은 게임을 가지고 있다는 것입니다 NetEase 게임에서 테스트 할 수 있습니다 이 게임은 2014 년에 개발하여 출시 한 게임입니다 우리는 150 가지 이상의 모바일 게임을 출시했습니다 또한 우리는 10 년 이상 여러 PC 게임을 운영해 왔습니다

그렇다면이 게임의 높은 품질을 어떻게 보장 할 수 있을까요? 또 다른 문제는 Android 기기 조각화입니다 그리고 안드로이드 시스템이 오픈 소스이기 때문에, OEM은 자신의 안드로이드 폰을 사용자 정의 할 수 있습니다 그리고이 그래프는 중국의 상황을 보여줍니다 Samsung, Huawei, Xiaomi를 볼 수 있습니다 각 모델에는 수십 개의 Android 모델이 있으며, 각 모델마다 화면 해상도가 다릅니다

다른 시스템 API 또는 심지어 그래픽 드라이버도 포함됩니다 NetEase 게임에서는 일반적으로 게임을 출시하기 전에 200 개 이상의 안드로이드 폰을 테스트합니다 그런 다음 테스트의 차이점을 살펴 보겠습니다 앱과 게임 사이 첫 번째 게임은 대개 우리 게임입니다

여러 플랫폼에서 릴리스됩니다 안드로이드, IOS와 같은; 같은 게임 버전 다른 플랫폼에서 그리고 때때로 데스크톱에서 그리고 지금 막 우리는 크롬 OS를 말했다, 맞다 그리고 때로는 팀 HTML5 플랫폼, 콘솔 또는 심지어 VR

다음 차이점은 우리가 더 적은 지원을 받았다는 것이다 제 3 자로부터 내 말은, 테스트 프레임 워크 또는 테스트 도구와 같은, 및 플랫폼 앱과 달리 Google은 앱 개발자에게 UI Automator와 같은 테스트 프레임 워크를 사용하거나 [무적]입니다 또한 테스트 도구는 Android Studio에 통합되어 있습니다

이제 우리는 Firebase 테스트 랩을 사용하여 응용 프로그램을 테스트합니다 또 다른 큰 문제는 게임은 항상 더 많은 테스트 케이스가 필요하다는 것입니다 사용자가 있기 때문에 더 많은 콘텐츠가 있습니다 앱에서보다 게임에서 재생할 수 있습니다 따라서 테스트 케이스는 게임에서 기하 급수적으로 증가합니다

그렇다면이 문제를 어떻게 해결할 수 있을까요? 우리는 점점 더 많은 사람들을 고용하여 테스트를 할 수 있습니다 그러나 테스트를 위해 더 많은 사람들을 고용해야합니다 200 대의 안드로이드 폰에서, 그건 용납 될 수없는 것 같아요 그것이 중국에 있더라도 따라서 자동화가 도움이됩니다

사실, 우리는 3 년간이 프로젝트를 개발했습니다 내부적으로 작년에 Google I / O에서 Firebase Test Lab과 이야기를 나누었습니다 팀 그리고 우리는이 프로젝트에 대한 오픈 소싱을 공동 작업합니다

그래서 먼저 Airtest IDE를 소개하겠습니다 그것은 데스크탑 IDE입니다 오른쪽은 거울 창입니다 ADB를 통해 PC와 연결하는 Android 휴대 전화 그리고 중간 부분은 코드 편집기입니다 여기서 임의의 파이썬 코드를 작성할 수 있습니다

그리고 왼쪽 부분은 계층 구조를 보여줍니다 이 Unity 게임의 UI 계층 구조, 또한 테스트 프레임 워크에서 제공하는 API도 제공합니다 그리고 화면 창에서 작업 할 때, 코드 편집기에서 테스트 코드가 자동으로 생성됩니다 데모를 보자 네

녹음 버튼을 클릭하십시오 터치 액션을 수행하면 파이썬으로 문장을 생성한다 또한 편집 할 수 있습니다 스 와이프 동작 그리고 나서 우리는 1 초를 풀 수 있습니다

또한 UI의 어설 션을 표시하십시오 그런 다음이 휴대 전화에서 바로 실행할 수 있습니다 그것이 효과가 있는지보기 위해서 테스트를 실행 한 후 오, 예, 작동 했어요 실행 후 HTML 보고서를 확인할 수 있습니다

테스트의 모든 단계를 보여줍니다 어떤 단계가 잘못되면 빨간색으로 라벨이 지정되고, 그리고 당신은 실패 지점을 볼 수 있습니다 우리는 두 가지 기본 테스트가 있다는 것을 눈치 챘을 것입니다 여기 프레임 워크 첫 번째는 Airtest 프레임 워크입니다

이미지 인식 [INAUDIBLE] 지식을 사용합니다 UI 요소를 찾습니다 그런 다음 사용 장치 API에서 시뮬레이션 된 입력을 수행합니다 이것은 Airtest의 구조입니다 우리는 시뮬레이션 된 입력과 같은 간단한 테스트 API를 사용자에게 제공합니다

마치 삽입하다 그런 다음 이미지 인식을 사용하여 UI를 찾습니다 그런 다음 플랫폼 API의 기본 추상 레이어가 있습니다 우리는 다양한 플랫폼의 입력 API를 시뮬레이션합니다 사용자가 스크립트를 실행할 수 있도록 Android, iOS 및 Windows와 같은 다양한 플랫폼에서 및 VR

Poco라는 또 다른 프레임 워크가 있습니다 이 프레임 워크는 애플 리케이션을위한 작업 프레임 워크와 유사합니다 Android 용 UI Automator와 유사합니다 그러나 게임의 대부분은 그래픽 API를 사용합니다 UI 위젯을 렌더링하기 위해 OpenGL이나 Vulkan을 사용합니다

따라서 Android 용 UI 자동화 프로그램을 게임용으로 직접 사용할 수는 없습니다 그래서 우리는 포코 (Poco)를 개발했습니다 이것이 작동하는 방식입니다 또한 기본 추상 레이어가 있습니다 여기에 다른 게임 엔진에 대한 장치 추상화가 있습니다

우리는 각 게임 엔진에 SDK를 제공합니다 테스트 프레임 워크가 통신 할 수있는 게임 엔진 우리는 JSON RPC입니다 그리고 우리는 다른 게임 엔진을 통합합니다 그래서 우리는 다른 게임 엔진에 대한 테스트를 작성할 수 있습니다

또한 맞춤 엔진 아침에 나는 대부분의 사용자가 맞춤 엔진을 사용하고있는 것을 보았습니다 우리는 다중 언어 SDK를 제공하므로 자신의 게임 엔진에 구현할 수 있습니다 우리의 테스트 프레임 워크와 도구를 사용하기 시작하십시오 여기에 비교가 있습니다

Airtest는 이미지 인식을 사용하여 UI, 시뮬레이션 된 입력을 수행하려면 플랫폼 API를 사용하십시오 여기에 멋진 점은 어떤 도구가 필요합니다 휴대 전화를 연결하고 사용하기 만하면됩니다 또한 여러 플랫폼을 지원합니다 그리고 Poco는 UI 계층 검사를 사용합니다

JSON RPC를 사용하여 게임 엔진의 SDK와 통신 할 수 있습니다 이제 SDK를 통합해야합니다 일반적으로 10 분 미만이 소요됩니다 그리고 이제 우리는 Unity와 Cocos, 두 개의 게임 엔진을 지원합니다 또한 Android 기본 앱인 SDK를 구현합니다

접근성 서비스를 사용합니다 따라서 통합 할 필요가 없습니다 Android 기본 앱 및 맞춤 게임용 앱으로 엔진 그렇다면 우리는 사용할 프레임 워크를 어떻게 선택합니까? 다음은 우리의 제안입니다 실제로, NetEase에서는 내부적으로 다양한 유형의 게임에 대한 수천 가지 테스트 Airtest의 장점은 분명합니다

계측을 필요로하지 않습니다 그리고 오픈 CV를 사용하여 단언하기, UI의 주장을하기 위해, 신뢰할 수 있고, 사용자가 볼 것으로 예상되는 내용을 정확히 확인하기 때문입니다 Poco는 UI 계층 검사를 사용하므로, 3D의 경우 특히 더 정확할 수 있습니다 객체가 게임에서 방향을 바꿀 때의 객체입니다 그리고이 Poco는 테스트 프레임 워크와 비슷합니다

UI 자동화와 같은 앱의 경우 그리고 그것은 게임에서 누락 된 부분을 다룹니다 그리고 두 달 전에이 두 프로젝트 GDC를 발표했습니다 다운로드 수는 6,000 회에 달하고 1000 개 이상의 별이 있습니다 이 두 달 동안 그리고 우리 프로젝트를 시도해보고 GitHub에서 우리를 주저하십시오

그러나 시작되었습니다 이 두 달 동안 두 가지 새로운 기능이 추가되었습니다 먼저 iOS를 지원합니다 사실, 작년에 iOS를 지원했습니다 그러나 성능은 발표하기에 충분하지 않습니다

이 데모를 보자 iOS를 x 코드와 연결합니다 그런 다음 Android 휴대 전화와 마찬가지로 화면을 조작 할 수 있습니다 그리고 이것은 우리 게임 중 하나입니다 그런 다음이 iPhone에서 테스트를 실행할 수 있습니다

그게 전부 야 이 iOS 지원의 뒷 패널 페이스 북의 웹 여행사에서 유래했습니다 그러나 웹 여행사, 문제는 너무 느리다는 것입니다 간단한 터치 동작은 1 초 정도 걸릴 수 있지만, 게임 자동화에는 용납되지 않습니다 따라서 지난 달 대부분의 API를 최적화합니다

이제 Airtest IDE에서 프레임 속도를 최대 15 FPS까지 높일 수 있습니다 또 다른 특징은 웹 페이지 자동화를 지원한다는 것입니다 IDE에서 Chrome 브라우저를 열 수 있습니다 그런 다음 Chrome에서 작동 할 수 있습니다 그러면 코드가 자동으로 생성됩니다

네 [INAUDIBLE]은 Selenium 프레임 워크를 기반으로합니다 또한 Airtest API를 사용하여 삽입하여 테스트를 실행 한 다음 보고서를 생성하십시오 Selenium은 웹 페이지 자동화 분야에서 매우 미숙하기 때문에, 우리는 그것을 다시 만들 이유가 없습니다 그래서 우리는 Airtest IDE 용 플러그인을 작성했습니다

이 웹 페이지 자동화 기록에 도움이됩니다 네가 게임을 풀어 주면 유용 할거야 HTML 플랫폼 지금까지 우리는 Airtest 프로젝트에 대해 이야기했습니다 Airtest IDE를 사용하여 테스트를 기록하고 실행할 수 있습니다

PC와 휴대 전화에서 그러나 우리는 어떻게 수백 개의 안드로이드 폰을 테스트 할 수 있습니까? 우선 Firebase Test Lab입니다 Firebase 테스트 랩은 테스트 서비스입니다 Google Firebase 팀 그리고 우리 팀과 협력하는 것은 무엇입니까? Airtest 및 Poco 스크립트 실행을 지원합니다 Firebase 테스트 랩에서

그리고 Airtest IDE를 사용하여 테스트를 번들로 제공 할 수 있습니다 스크립트를 APK에 추가하십시오 그런 다음 FTL 웹 페이지에 업로드 할 수 있습니다 그런 다음 계측 테스트를 시작할 수 있습니다 FTL에서 제공하는 장치 클라우드를 사용하십시오

이것이 우리 내부 장치 팜입니다 우리는 200 개의 장치로 구성된 장치 팜을 설정했습니다 200 개의 Android 기기 그리고 우리는이 숫자가 2,000 개의 스크립트가 될 수 있다고 기록했습니다 매주 다른 게임 스크립트를 실행합니다

우리 게임은 매주 업데이트되기 때문에 그리고 그것이 어떻게 작동하는지 보겠습니다 그것은 단지 [불충 한] 시험의 주위에이다 Airtest IDE에 의해 생성됩니다 그래, 그게 다야 이 자동화 프로젝트의 로드맵에 대해서는, 우리는 더 많은 고객을 지원하고자했습니다

iOS, Android 에뮬레이터 및 웹 페이지 등이 있습니다 이들은 더 나은 버전입니다 지금 시도해 볼 수 있습니다 버그를 발견하면 우리에게 문제를 해소하십시오 또한 우리는 하이브리드 응용 프로그램이며 미래에는 UnrealEngine입니다

또한 Android TV도 지원했습니다 하지만 Chrome OS에 대해 잘 모르겠습니다 하지만 어쩌면 작동 할 수도 있습니다 그리고 또 다른 중요한 것은 우리는 오픈 소스를 구축하고자합니다 커뮤니티에서이 프로젝트를 진행하고 있으며 점점 더 많은 개발자들이 그것을 좋아하고이 프로젝트에 참여하십시오

네, 고마워요 그리고 어떤 질문? 관객 : 당신이 사용하고 있다고 언급했습니다 접근성 서비스 그 때 어떤 문제가 있었습니까? 그것은 최근에 제한 되었습니까? 신화 : 언제? 청중 : 접근성 서비스 이 런처를 사용하는 앱은 제한적 이었지만, 또는 역방향 액세스를 시도한 앱 [INAUDIBLE] 큰 도청 그것들은 제한되어 있기 때문에 이용되고 있었다

너희들이 그것으로부터 어떤 영향을 본 적이 있니? XIN LIU : 기본 앱의 UI 테스트를 위해, 우리는 어떤 제한도 보이지 않는다 나는 그것이 UI 자동화 또는 [INAUDIBLE]가하는 것을 할 수 있다고 생각합니다

The Best 2D Game Engines in 2018

2D 게임은 가장 큰 단일 게임 시장이며, 이는 최고의 게임 엔진입니다 모바일, 콘솔 또는 데스크톱에서 경쟁 할 수있는 멋진 2D 게임을 제작할 수 있습니다

iOS, Android, 콘솔 또는 Steam에 배포하는 경우이 게임 엔진은 당신의 배려를받을만한 특징과 실적 이 비디오의 끝에서 고려해야 할 엔진, 어떤 유형의 게임인지 알 수 있습니다 엔진은 과거에 만들어졌으며 어떤 장르의 게임이 가장 잘 사용 되었습니까? 우리는 GameDev, AKA TLC #, AKA Abbott 및 Code-stello, AKA The Pineapple DirectX-Press, 이것이 최고의 2D 게임 엔진 목록입니다 다시 오신 것을 환영합니다! Ask Gamedev에 처음 오신 분들은 게임 산업에 대해 알 수있는 비디오를 제작합니다 그래서 당신은 당신의 게임을 고양시키고 다른 사람들을 감동시킬 수 있습니다

당신이 gamedev 여정을하고 있다면 가입을 고려하십시오 우리는 당신을 도중에 도와주고 싶습니다 훌륭한 2D 게임을 만들고 싶습니까? 이 비디오의 엔진 중 하나를 선택하면이 모든 것처럼 잘못 될 수 없습니다 큰 평판을 얻는다 다음 엔진에는 모두 강력한 커뮤니티가 있으며 튜토리얼과 리소스는 온라인으로 충분합니다

당신이 게임을 만들기 시작하게하십시오 Cocos 2D-x로 시작하자 이것은 세계에서 가장 인기있는 2D 게임 엔진 중 하나입니다 코코스가 좋은 부분을 담당 했으므로 iOS 및 Android에서 볼 수있는 모바일 게임의 Cocos는 아시아에서 가장 인기있는 게임 엔진이기도합니다 Cocos2D-x는 오픈 소스이며 Android, iOS, Linux, OS X 등의 크로스 플랫폼입니다

개발자를위한 상세한 설명서가 많이 있으며 광대 한 커뮤니티에서 지원합니다 그것은 Zynga, Glu, Big Fish Games 등과 같은 주요 스튜디오의 개발 프로젝트에서 사용되었습니다 Disney Mobile 등이 있습니다 언어면에서 Cocos2D-x는 C ++, Lua 및 Javascript를 지원합니다 Cocos2d-x에 대한 가장 좋은 소식은 MIT 라이센스하에 있으며 상업용으로 무료라는 것입니다

용도 라이센스 비용이나 로열티가 없습니다 비용 없음 비어 있는 과거의 Cocos2d 게임에는 Hill Climb Racing, Flow Free, Badland가 포함됩니다

다음은 또 다른 대단히 인기있는 게임 엔진 인 Unity입니다 유니티 (Unity)가 대중적인 선택이되어 왔기 때문에 지난 10 년 동안 어떤 엔진도 더 많은 입양을 보지 못했습니다 독립 개발자 용 더 큰 스튜디오에서도 수용하기 시작했습니다 Unity는 크로스 플랫폼이며 Android를 비롯한 거의 모든 플랫폼에서 쉽게 배포 할 수 있습니다

iOS 및 Windows 또한 가상 현실 플랫폼을 지원합니다 프로그래밍 언어로 C #을 사용합니다 화합은 개인적인 용도로는 무료이며 유료 플랜은 월 35 달러부터 시작합니다 유니티 (Unity)는 수많은 인디언들에 의해 사용되어 왔으며 Electronic Arts, Ubisoft, 스퀘어 에닉스 (Square Enix) 등

인기있는 유니티 게임으로는 Pokémon GO, Super Mario Run, Angry Birds 2가 있습니다 우리가 추천하는 다음 2D 엔진은 오랫동안 사용되어 왔으며 수많은 인디언을 도왔습니다 게임 개발 프로젝트를 성취하십시오 우리는 Gamemaker 스튜디오에 대해 이야기하고 있습니다이 스튜디오는 픽업하기 쉬운 인터페이스로 유명합니다 코더가 아닌 게임 개발자에게 탁월한 툴 세트입니다

GameMaker에는 알지 못하게 게임을 만들 수있는 훌륭한 드래그 앤 드롭 인터페이스가 있습니다 코드 작성 방법 그러나 개발을 사용자 정의하려는 경우 Game Maker 언어를 수정하고, 스크립트의 수정, 스크립트 작성, 이벤트, 및 기타 코드 요소 최신 버전 인 GameMaker Studio 2는 기본 라이센스로 39 달러부터 시작합니다 최대 $ 1500까지 "궁극"버전입니다

무료 평가판도 제공됩니다 Spelunky, Hotline Miami, Undertale 등 GameMaker로 만든 멋진 게임이 있습니다 다음은 인기 급상승중인 오픈 소스 엔진 인 Godot입니다 우리는 최고의 게임 엔진에 관한 최근 비디오를 보았습니다 우리는 Godot을 언급하지 않았습니다

코멘트에 Godot 팬들에 의해 호출 위의 카드를 클릭하여 해당 비디오를 확인할 수 있습니다 Godot은 웹, 윈도우, 맥, 리눅스, 안드로이드에 게시 할 크로스 플랫폼 엔진입니다 및 모바일에서의 IOS GDScript는 Godot의 주요 프로그래밍 언어이지만 C #도 지원됩니다

가격에 관해서는 Godot은 오픈 소스이며 상용으로 100 % 무료로 사용할 수 있습니다 목적 면허 또는 로열티를 지불 할 필요가 없습니다 그것은 또한 우리의 최고의 무료 게임 엔진 비디오에 등장했습니다 선택할 수있는 더 많은 무료 엔진을보고 싶으면 해당 비디오를 체크 아웃 할 수 있습니다

이리 Godot로 만든 멋진 게임에는 이름없는 유령의 점과 Godotron이 있습니다 이번 주에 우리의 특색있는 Ask Gamedev 커뮤니티 멤버 게임은 또한 Godot으로 제작되었습니다 동영상을 끝까지 확인하여 확인하십시오 다음 목록은 Construct3입니다 간단한 인터페이스, 끌어서 놓기 기능 및 기본 제공 라이브러리를 통해 Construct3은 훌륭합니다

신속하게 아이디어를 프로토 타이핑 할 수있는 엔진 이 엔진에 대한 가장 멋지고 가장 독창적 인 것 중 하나는 완전히 실행된다는 것입니다 귀하의 브라우저에서! 자산 가져 오기부터 로직 생성, 테스트 및 재생까지 모든 것 게임을 내보낼 수있는 모든 방법 – 브라우저에서 모든 일이 발생합니다 얼마나 편리합니까? Construct3을 사용하면 HTML5로 게임을 웹에 빠르게 내보낼 수 있으며, iOS, Android, Steam, Facebook 등 다양한 플랫폼에서 사용할 수 있습니다 Construct3은 코딩 언어를 사용하지 않으므로 초보자에게 탁월한 옵션입니다! 이 엔진을 사용하는 방법을 배우려면 운이 좋습니다

현재 작업 중입니다 Construct3에 대한 튜토리얼 시리즈 위의 링크를 클릭하여 액션 플랫폼 자습서를 확인하십시오 가격면에서 Construct 3 라이센스는 개인 라이센스의 경우 연간 99 달러부터 시작합니다 그러나 그들은 꽤 포괄적 인 무료 평가판을 제공합니다

editorconstructnet으로 가서 시도해 볼 수 있습니다 Construct 3에서 만든 게임을 시험해보고 싶다면 Scirra에서 무리를 연주 할 수 있습니다 아케이드 마지막으로 2D 엔진을 제작 한 팀의 엔진 인 우리 목록에 계속 남았습니다

25 년 동안 – 예, 우리는 Clickteam Fusion에 대해 이야기하고 있습니다 90 년대 애호가들에게 게임 코딩을하는 방법을 몰랐던 게임 개발자들은 여전히 ​​위대한 것을 가지고있었습니다 크리크 앤 플레이 (Klik & Play), 멀티미디어 퓨전 익스프레스 (Multimedia Fusion Express)와 같은 옵션은 Clickteam의 훌륭한 사람들 덕분입니다 빠른 속도로 오늘, 그리고 그들은 여전히 ​​Clickteam 퓨전 25

이전 반복과 마찬가지로 Clickteam Fusion 25는 2D 제목과 기능을 위해 설계되었습니다 드래그 앤 드롭 인터페이스 및 시각적 프로그래밍을 제공합니다 이를 통해 Windows, Android 및 iOS를 포함한 플랫폼 용 게임을 만들 수 있습니다 Clickteam Fusion 2

5가 포함 된 Construct3과 마찬가지로 복잡한 프로그래밍 언어도 없습니다 배우다 가장 유명한 인디 게임 중 일부는 Clickteam Fusion을 사용하여 만들어졌습니다 Freddy 's에서 Hero, Freedom Planet 및 Five Nights가 있습니다 99 달러에 Steam에서 Clickteam Fusion 2

5를 구입할 수 있습니다 현재 스팀에 대해 매우 긍정적 인 평가를 받았으며, 376 스팀 리뷰 중 90 %가 스팀 리뷰를 제공합니다 엄지 손가락 그리고 이제 우리는 엄지 손가락을 내고 있습니다이 멋진 멋진 아케이드 게임 인 Moon Cheeser에, Ask GameDev 커뮤니티 회원 Pigdev Studio에 의해 제작되었습니다 Moon Cheeser는 달을 뛰어 다니는 마우스처럼 놀아주는 끝이없는 주자입니다

치즈의 우리는이 게임의 아트 스타일을 실제로 파헤칩니다 우리가 가장 좋아하는 YouTube 중 하나를 생각 나게합니다 채널, Kurzgesagt Itchio에서 Moon Cheeser를 다운로드하고 재생할 수 있습니다

새로 제작 된 게임 코드가 포함 된 개발자 번들을 다운로드 할 수도 있습니다 – GDscript (Godot의 스크립팅 언어) 및 모든 게임 자산 이번 주에 끝났습니다 우리가 좋아하는 2D 게임 엔진을 놓쳤습니까? 그렇다면 의견에 대해 알려주십시오 보고 주셔서 감사합니다! 우리는 Gamedev에게 묻습니다 우리는 어떻게 게임 개발 비디오를 만들 수 있습니까? 게임을 높이고 다른 사람들에게 영감을 불어 넣으십시오

매주 새로운 콘텐츠를 게시하므로 구독을 고려하십시오 새 동영상을 사용할 수있게되는 즉시 알려줍니다

파이썬 비행기 슈팅 게임 만들기 (Creating a Shooting Game with Python) (한글자막)

오늘은 파이썬으로 슈팅 게임 만들기라는 제목으로 강의를 준비했습니다 슈팅 게임이 뭔지부터 살펴보고 그리고 파이썬 설치 pygame 라이브러리 설치 슈팅 게임 만들기 이런 순서대로 진행하도록 하겠습니다

먼저 슈팅 게임이 뭔지 살펴볼텐데 슈팅 게임은 shooting game, STG라는 약칭으로 불리기도 하고 적의 공격을 피하며 무기를 쏘는 게임의 총칭을 의미합니다 슈팅 게임이 구조나 조작이나 간단한 형태라서 게임 역사 초창기부터 존재하였던 장르입니다 중력과 같은 복잡한 물리 엔진이 필요하지 않기 때문에 게임 제작 입문용으로 슈팅 게임이 자주 사용됩니다 파이썬을 전혀 해보지 않았다는 사람들을 위해서 파이썬 설치를 어떻게 하느냐 간략하게 살펴보도록 할께요 먼저 파이썬 홈페이지 사이트를 띄운 다음에 (pythonorg) 다운로드를 누릅니다 윈도우 사용자는 윈도우를 눌러서 윈도우에서 64비트면 64비트를 다운로드하여 설치하면 됩니다 다운로드 후 설치하면 이와 같은 설치 화면이 뜨는데 밑에 path 부분에 체크를 해주신 뒤에 install을 눌러주세요 파이썬 설치가 다 되어있다고 가정하고 pygame 라이브러리를 설치하는 부분을 살펴보도록 할께요

pygame이 뭐냐 pygame은 sdl 라이브러리 위에 구축된 멀티미디어 어플리케이션을 만들기 위해서 제공되는 오픈 소스 파이썬 프로그래밍 라이브러리입니다 pygame 로고도 귀엽게 만들어져 있습니다 다양한 pygame에 feature들도 있습니다 pygame 설치는 어떻게 하느냐 시작 – 실행 – command 창 열고 pip install pygame 명령을 수행합니다 이제 이 화면처럼 설치되는 과정을 거치면 되겠습니다 pygame이 설치가 잘 되었는지 확인을 해야 합니다 그래서 pygame을 실행 해 볼게요 idle python을 실행해서 import pygame을 쳐주면 pygame 194가 잘 설치되었다는 메시지를 볼 수 있습니다 이제 게임을 만들텐데 슈팅 게임 만들기 바로 이런 게임을 만들겁니다 게임이 재미있게 보이죠 소리도 들어가고 이게 최종 완성된 게임입니다 이 게임의 컨셉은 지구를 지켜라 밑에 배경 그림에 지구가 있죠 운석이 지구를 향해 떨어지는데 그 운석을 미사일을 쏴서 없애는 게임입니다

게임을 만들려면 굉장히 많은 리소스들이 필요합니다 예를 들어 배경화면, 폭발되는 그림, 미사일, 각종 폰트들 그리고 다양한 운석 그림이 필요합니다 근데 이걸 어떻게 준비하느냐 여러분들이 직접 찾아서 원하는 이미지들로 바꾸실 수도 있지만 강의 진행상 제가 일일히 정리해서 홈페이지에 올려놨습니다 suanlabcom 홈페이지에 들어가서 특강에 게임 리소스 버튼이 있습니다 youtube 설명 칸에도 링크가 있습니다 다운로드 한 파일을 압축을 풀어봅니다 압축된 폴더 안에 모든 리소스들이 들어가 있습니다 이제 게임에 필요한 여러 준비들이 끝났습니다 그 다음에 게임 화면을 처음에 구성해야 되는데 실제적인 게임을 만드는 코딩이 들어갑니다 여러분들과 함께 코딩을 할텐데요 새로운 코딩을 할 문서가 필요하기 때문에 file – new file을 클릭하여 새 문서를 띄웁니다 이제 이 파일에서 우리가 코딩을 작성할텐데 먼저 저장을 좀 해야겠죠 경로상 우리가 압축을 풀었던 pyshooting 폴더 안에 pyshootingpy 라는 이름으로 저장을 해볼게요 이제 우리가 게임 코드를 작성 해 보도록 하겠습니다 파이게임 라이브러리를 로드하고요 그 다음에 system 라이브러리, 게임은 시간과 관련 된 것이 있어야겠죠 그래서 세가지를 일단 먼저 로드해줍니다 그 다음에 게임 처음 화면을 블랙으로 하기 위해 RGB를 0으로 설정합니다 게임 화면 크기는 여러분들이 원하시는 크기로 설정하시면 됩니다 저는 480에 640으로 하겠습니다 그 다음에 게임 초기화를 위한 함수 ‘initGame’이 필요합니다 그 다음에 global 변수로 gamePad와 clock을 가져옵니다 pygame이라는 라이브러리를 또 초기화시켜 줍니다 gamepad를 구성하는데 패드는 paygame

Displayset 게임 전체 우리가 아까 정의했던 크기를 정의 해줍니다 그리고 ptgame의 캡션 즉, 게임의 이름을 파이슈팅이라고 지었는데 이 이름을 제목으로 띄워주는 부분을 말합니다 그 다음에 clock을 걸어줍니다 그 다음에 실질적으로 게임이 실행될 수 있는 함수인 rungame을 넣어줍니다 그 다음에 ongame을 false로 둡니다 각종 이벤트를 처리하기 위해서 while을 돌린 다음 event를 넣어줍니다 게임을 처음 할 때에는 이벤트가 없고 게임을 종료시키는 이벤트만 설정해둡니다 창을 닫거나 하면 파이게임 종료시키고 시스템 종료시키는 이벤트를 처리해 줍니다 그 다음은 화면을 검은 색으로 채우는 fill을 설정합니다 그 다음에 파이게임의 디스플레이를 업데이트 합니다 Clock tick을 60으로 한다는 것이 무슨 말이냐 하면 초당 프레임 수를 60으로 설정하여 게임 플레이가 초당 60으로 진행이 됩니다 그 다음 이 두개의 함수를 실행시키기 위해 Initgame과 rungame을 실행시켜 줍니다 F5를 눌러서 실제 동작을 시켜보겠습니다 이렇게 화면이 구성이 됐습니다 그 다음은 배경그림넣기 배경 그림을 그리기 위해서 이 객체를 그리는 drawobject라는 함수를 정의해 놓습니다 gamepad를 global로 가져옵니다 blit란 비티 현상과 관련해서 해당하는 오브젝트를 x,y좌표 위치로부터 그려라라는 의미가 되겠습니다 그리고 background를 가져옵니다 Background= pygame,image,load 에서 png파일로 정의해 둔 걸 가져옵니다 로드했고, 그리는 함수 만들었고, 그 다음 이제 그려야죠 그리는데 아까 블랙으로 색깔 지정한 걸 뺄게요 왜냐면 게임하면 블랙으로 안 칠해도 배경화면을 꽉 채우기 때문에 Drawobject로 background 0,0 이렇게 그려주겠습니다 확인 보시면 background가 정의되지 않았다 이걸 보시면 backround 정엽변수를 안 불러왔습니다 지구가 있고 우주가 있는 그런 배경화면이 넣어졌습니다 배경 그림과 함께 실제 전투기가 있어야겠죠 그래서 전투기를 넣어줍니다 fighter 넣어주고요 Fighter에 이미지를 로드해줍니다 전투기를 어느 위치에 할지 초기화가 필요합니다 이미지 사이즈를 가져온 뒤 전투기의 실제적인 폭과 너비로 지정을 해줍니다 그 다음에 전투기가 게임에 나타나야 하는데 처음에 어디에 나타나야 할지 전투기 초기 위치로 xy좌표로 잡아줍니다 폭에서 045 위치, 그리고 높이에서 09 위치 즉 밑에 부분, 중간에 위치하게 되겠죠 그리고 전투기로 화면을 그려줘야겠죠 배경화면 그린 다음에 drawobject로 전투기를 화면에 그려줍니다 중앙 쯤에 위치하도록 이렇게 비행기를 넣었습니다 그 다음은 전투기의 움직이는 부분을 설정해 줍니다 이 이벤트 처리 부분에 전투기를 움직일 수 있는 키보드 이벤트도 한 번 받아보도록 할게요 Event Type in pygame

keydown 키가 눌리면 이 이벤트로 들어옵니다 그런데 키가 무슨 키가 눌러있는지 또 한 번 체크해주어야겠죠 Event Key=pygamek_left 왼쪽으로 다섯칸 -5를 해주어서 왼쪽으로 움직이라는 의미입니다 오른쪽도 설정해줍니다 Fighterx를 +5로 설정하여 오른쪽으로 움직이도록 해줍니다 Left, right 키 눌렀을 때 움직이는 부분을 해주었습니다 Keydown은 키가 눌렀을 때, keyup은 키를 뗄 때 입니다 keyup이벤트가 들어오면 비행기가 멈춰야 겠죠 두 개가 들어오더라도 비행기 현재 좌표를 0으로 설정하여 손을 떼면 정지하도록 해줍니다 그 다음에 전투기 위치가 키보드 조작에 따라서 바뀌도록 재 조정해주어야 겠죠 실제 x위치에 다가 fighterx라는 즉 키보드로부터 변경된 위치를 x좌표 위치로 발현을 시켜줍니다 그 다음에 x가 0보다 작을 경우란 게임 왼쪽으로 끝까지 가는 경우 비행기가 움직이지 않게 하기 위해 음수가 될 경우에는 0으로 게임 밖으로 빠져 나올 수 없게 최대 왼쪽으로 갈 수 있는 부분을 고정해주는 겁니다 마찬가지로 게임 화면에 끝까지 오른쪽으로 갔을 때 비행기 전체 width값에 pad에서 width값을 뺀 나머지 값은 x위치로 즉 더 이상 오른 쪽으로 못가게 막아줍니다 이렇게 움직이는 것 까지 했습니다 그 다음에 비행기가 미사일을 발사해야겠죠 미사일을 발사하기 위해서 미사일 그림을 좀 가져올게요 미사일 그림을 가져 왔습니다 그 다음에 global 변수로 미사일을 선언합니다 그 다음에 무기 좌표 리스트 missileXY를 리스트 형태로 미사일 하나만 발하는게 아니잖아요 여러 개니까 여러 개 위치를 가지고 올 변수가 필요합니다 미사일을 스페이스키로 발사하기 위한 설정을 해줍니다 미사일 현재 위치를, fighter의 width를 2로 나눕니다 즉 미사일을 현재에 비행기의 중간에서 나가게끔 x좌표를 잡아주고요 y는 전체 y좌표에서 비행기 크기 만큼 빼주면 되겠죠 그러면 미사일이 전투기의 앞부분 중간에 발사되게끔 설정이 됩니다 그 다음에 만들었던 missileXY 리스트 변수에다가 missileX, missileY 좌표값을 그대로 저장해 줍니다 여러개가 나가야 되기 때문에 저장 해 줍니다 이렇게 미사일 여러 개가 발사되야 되겠죠 미사일을 발사한다라는 건 어디에 있어야 되느냐 비행기 그리고 나서 length를 구합니다 즉 0이 아니면 (1개 이상이면) 여러 조건에 따라서 미사일을 그립니다 Enumerate로 미사일 xy에 따라서 전체적으로 돌고 그 다음에 i와 bxy가 첫번째 부분에 -10을 해줍니다 미사일이 위로 발사 되므로 y좌표로 치자면 -10씩 미사일이 빠르게 이동하는 형태로 만들어 줍니다 그 다음 미사일 여러 개니까 bxy부분에 대한 값을 넣어줍니다 즉 -10 만큼 이동된 값이 미사일xy라는 리스값으로 바뀌어야합니다 미사일 xy값이 현재 -10만큼 이동된 값으로 바뀌어야 되기 때문이 이런 식으러 넣어줍니다 그 다음에 0보다 작거나 같을 때, 즉 미사일이 화면 밖으로 넘어갔을 때 화면 밖으로 넘어가면 미사일 리스트에서 제거해주어야 합니다 미사일이 실제 0이 아니면 다시 한번 미사일을 다시 한 번 그려줍니다 그 다음에 미사일을 발사해야 하는데 없앨 운석을 떨어뜨리겠습니다 운석을 그냥 떨구면 재미없으니 랜덤으로 30개나 준비했습니다 운석 30개를 random으로 가져옵니다 운석을 하나만 해도 되는 데 단순하게 하나만 있으면 게임 전체의 다이나믹스가 감소되겠죠 30개 부분을 이렇게 정의했습니다 운석이 랜덤하게 생성될 수 있도록 설정해줍니다 결국 불러오는 시점에서 랜덤으로 고르면 되기 때문에 아까 우리가 정했던 30개 중에서 1개를 랜덤하게 고릅니다 그런데 운석의 크기가 다르기 때문에 가져온 그림의 실제 크기를 가지고 폭과 너비를 가져옵니다 게임의 다이나믹스를 위하여 운석의 초기 위치도 랜덤하게 설정해 줍니다 그래서 운석의 x위치를 바꾸어 줍니다 Rockspeed 즉 운석이 떨어지는 속도인데 이건 초기값을 2로 지정을 해볼게요 운석이 실제 미사일이 발사되고 화면이 업데이트 되기 이전에 rockY, 운석은 y좌표로 움직이니까 그래서 rockspeed 2로 적용했던 부분을 rockY도 적용시켜 줍니다 그리고 운석이 지구로 떨어졌어요 pad의 전체 크기보다 rockY좌표로 넘어 섰을 경우 운석이 화면밖으로 지나갔기 때문에 새로운 운석을 만들어주어야 합니다 copy 후 추가 그러면 운석을 새로 고르게 됩니다 그리고 운석을 실제로 그리기 위해 rockX좌표, rockY좌표를 설정합니다 운석이 파괴되도록 만들어 보겠습니다 파괴되는 데 운석이 그냥 사라지게 할 수도 있겠지만 그럼 재미가 없으므로 폭파되는 이미지를 가져옵니다 그래서 explsion 이미지 파일을 가져와요 그리고 실제 전투기 미사일에 운석이 맞았을 때 부분을 처리하겠습니다 맞았을 때 (isShot) 갯수를 세 줄게요(shotCount) 그 다음 운석을 놓쳤을 때 정보도 입력하겠습니다 global변수로 explosion을 둘 다 넣어줍니다 그 다음에 미사일이 운석을 맞췄어요 그럼 이제 미사일을 발사 그리는 부분에서 미사일이 운석을 맞췄을 때를 처리해주어야 합니다 만약에 bxy[1]에 0번 째가 rockX 즉 운석 위치, 돌의 부분에 겹치냐 안겹치냐를 확인하는 부분입니다 미사일이 운석의 범위 안에 들어가면 기존 미사일을 제거해주어야 겠죠 미사일이 운석을 맞추었으니까 isShot을 True로 바꾸어 줍니다 그 다음에 맞았으니까 shotCount를 1더해줍니다 운석을 실제 그리기 이전에 만약에 isShot을 플래그로 뒀던게 True로 바뀌면 즉 맞췄을 경우에는 폭파해야 하니까 explosion으로 넣던 운석이 폭파되는 그림을 띄웁니다 그리고 폭파 시켰으니까 새로운 운석을 그립니다 그리고 isShot은 True에서 False로 바꾸어 줍니다 운석이 파괴되는 것까지 추가했습니다 그 다음에는 파괴한 운석수랑 놓친 운석수, 게임 스코어 정보가 있어야 합니다 카운터 정보를 받으면 나눔고딕으로, 사이즈 20으로 표현해보겠습니다 Rendering 하고 ’파괴한 운석 수’ 를 적어 줍니다 그 다음에 카운트로 온 운석수를 str으로 변환해줍니다 파괴한 운석수 색깔을 흰색으로 할게요 (RGB모두 255, 흰색) 위치는 10,0 왼쪽 위에 둘게요 그리고 운석을 놓친 수도 비슷하니까 복사해줄게요 (writeScore를 writePass로 바꿔주기) 위치를 오른쪽 위에 띄우고 빨간색으로 강조할게요 (RGB중 R을 255로) 실제 미사일이 운석을 맞추었을 때 스코어를 증가시켜주어야 되기 때문에 shotCount라는 변수를 반영하고 그 밑부분에 실제 운석을 맞춘 점수가 표시되게끔 shouCount를 설정 해 줍니다 그 다음 운석이 지구로 떨어진 경우 padHeight보다 운석y좌표가 넘어갔을 때 rockPassed를 1로 증가시켜 줄게요 놓친 경우도 마찬가지로 화면에 출력해줍니다 writePassed에 ‘놓친 운석 수 표시’로 이름을 바꾸어 줍니다 그 다음에 운석을 맞추면 속도를 증가시켜봅시다 isShot 부분에 맞추면 rockSpeed에 숫자를 넣습니다 02

씩 증가하는데 10보다 빠르면 게임 거의 불가능하기때문에 10으로 그냥 맞춰줍니다 조금씩 빨라지는 것이 느껴지시나요? 맞출수록 운석 내려오는 속도가 빨라지고 있어요 전투기가 운석과 충돌하거나 운석을 놓혀 게임오버가 되면 게임을 정지하고 다시 하는 부분을 추가해보도록 하겠습니다 게임에 메시지를 출력해야 하기 때문에 메시지 함수를 통해서 실행시킵니다 TextFont = pygameFontFont 게임 메시지는 60정도로 좀 크게 출력할게요 Textfont Render에서 색깔은 레드 (RGB 255, 0,0) 텍스트의 포지션은 Length에서 실제 포지션을 정해줍니다 TextPosCenter 정중앙에 출력한다는 의미입니다 이것은 실제적인 화면에 텍스트를 출력하는 부분이고 게임의 디스플레이를 업데이트 해줍니다 이건 뒷부분인데 미리 Sleep만 걸어 줄게요 우리는 동전이 무제한이에요 그래서 게임이 다시 한번 또 실행이 됩니다 ‘Sleep 2초 쉬고 게임 다시 실행해줘’ 이거에요 그 다음에 crash되는 부분 즉 충돌났을 때 아까 우리가 정의했던 메시지 함수에다가 전투기가 파괴됐다 라는 부분을 호출해줍니다 그 다음 게임오버된 부분 게임오버 되면 '게임오버가 됐다'를 띄워줍니다 실제 운석이 충돌되는 지에 대한 이벤트를 넣어줍니다 전투기가 위치가 바뀌는 부분을 읽고 위치가 바뀌어서 실제 다음 전투기를 그리기 이전에 전체 rock의 좌표와 Y라 보면 안되겠죠 X도 마찬가지로 그려줍니다 충돌하는 부분을 체크하는 겁니다 그래서 y, x좌표를 보고 실제 운석이랑 비행기의 어떤 부분이랑 겹치는지 안겹치는 지를 체크해서 만약 겹치면 충돌이 났다라고 띄워줍니다 그 다음은 운석을 계속 놓칠 경우 설정합니다 만약에 놓친 것이 3개면 게임오버가 되는 설정입니다 오타를 잘 체크해봅시다 🙂 위치도 잘 체크해 봅시다 🙂 게임오버를 확인해 봅니다 게임의 각종 소리를 넣어 보겠습니다 미사일이랑 global 변수랑 게임오버되는 오버사운드 2가지를 미사일 사운드, 게임오버 사운드 두개를 global 변수로 추가해 줍니다 그 다음 pygame

MixerMusicLoad 에서 실제 음악파일들을 받을 건데 Musicwav 파일은 제가 배경음악으로 준비를 했습니다 게임 배경음악인데요 유튜브 오디오 라이브러리에서 아주 좋은 걸로 찾아놨습니다 그 다음에 미사일이 발사할 때도 사운드를 발생해주어야 되기 때문에 Missile

wav파일 그 다음에 게임 오버 사운드 이렇게 load하는 부분이 끝났습니다 그 다음에 각각에 게임 중에 미사일이 발사되죠 스페이스 누르면 미사일 사운드를 플레이 시켜줍니다 그 다음에 게임 메시지 출력할 때 게임 오버 사운드를 씁니다 여러분 메시지 출력할 때 무엇을 해주어야 하냐면 배경음악이 재생되고 있을 거 아니예요 그 배경음악을 잠깐 멈추어 주어야 해요 그 다음에 게임 오버 사운드를 플레이 시켜줍니다 Sleep 2해주고 그 다음 배경음악을 다시 플레이 시켜주어야 합니다 그 다음에 운석을 만들어주는 부분 처음에 운석 만들어주는 부분에 운석이 새롭게 생성되는 동시에 사운드도 랜덤으로 고를 수 있게 설정해둡니다 DestroySound로 4개중에 하나를 고를 수 있게 해주고요 그리고 운석이 파괴되는 건 실제 맞추었을 때 IsShot, 맞추었을 때 파괴되는 폭발 그림 그려주고 여기에 Destroy 사운드를 재생해줍니다 파괴되고 새로운 운석 만들면서 이때 destroy 사운드를 랜덤하게 골라 주는 부분을 추가해 줍니다 이렇게 게임 동작을 하는지 확인해볼까요 소리 잘 나죠 배경음악도 나오고 미사일 쏘는 소리 그리고 파괴되는 소리도 나옵니다 이렇게 해서 지구를 지켜라라는 파이슈팅게임 완성이 됐습니다 완성! 여러분들이 게임을 가지고 다양한 변형으로 새로운 게임을 만들 수 있습니다 이미지를 바꿀 수 있고, 소리를 바꿀 수 있고 게임을 좀 더 다양한 장르로 여러분들이 원하는 게임을 쉽게 만들 수 있겠죠 이렇게 게임을 만드는 과정까지 살펴보았고요 다음에 또 좋고 유익한 강의로 찾아 뵙도록 하겠습니다 지금까지 이수안컴퓨터 연구소였습니다 감사합니다

How to download Official Tekken 7 game in Android on ppsspp || Only 350 MB || 2018 ||TECHNO KINGS

철권 7 다운로드 방법 안드로이드에만 350 메가 바이트 이것은 tekken 6의 모드입니다 AND if ~에 새로운 채널 그 후 PLZ 구독하기 테크노 킬링 스 이상 재미있는 동영상 그리고를 눌러라 종 아이콘 과 잊지 마라

명중하다 같은 버튼 그래서 친구 지금 너 아르 보고있다 게임 플레이 이의 경기 그래서 친구 없이 시간 낭비 ~시키다 도망 시작한 테크노 킹스 예, 이깁니다 sttart 수 있습니다 모든 브라우저 열기 나는 UC 폭음가를 여는 중이다 개점 그 다음 검색 막대로 이동하십시오

기다림 과 유형 technokings113blogspotin 이 링크 나는 설명으로 제공 할 것이다 또한 타이핑 할 수있게 해준다 잠시만 기다려라

이제 검색을 클릭하십시오 지금 가자 잠시만 기다려라 기다림 인스 타 그램에 날 팔 워우 해줘 설명의 링크 기다림 기다림 삼 2 1 가기 이리 이제 와서 다만 그걸 두들겨 라 또는 당신은 할 수있다 수색 그것 onread more를 클릭하십시오