격투 게임이 지연 기반 넷코드 및 롤백 넷코드를 사용하는 방법에 대한 설명 3 – 롤백 넷코드의 기술적 측면과 구현 난점

롤백 넷코드의 기술적 측면 이전 포스트에서 롤백이 작동하는 방식과 왜 롤백이 나쁜 연결 상태을 감추기에 좋은 이유에 대해 이야기했습니다. 그러나 이제 우리는 롤백 넷코드가 어떻게 만들어지는지, 롤백을 구현하는 게임이 무엇을 할 수 있어야 하는지, 왜 일부 게임에서 좋은 롤백을 만드는 데 어려움이 있는지에 대해 이야기해야 합니다. 좋은 넷코드를 만드는 것이 더보기…

격투 게임이 지연 기반 넷코드 및 롤백 넷코드를 사용하는 방법에 대한 설명 2 – 롤백(Rollback) 넷코드

롤백 넷코드 (Rollback Netcode) 게임의 넷코드 선택에도 불구하고 플레이어와 상대 간의 거리를 단번에 바꿀 수 없고, 네트워크가 정보를 누락하거나 지연(delay)시키는 것을 막을 수 없기 때문에 어떻게 롤백 넷코드 전략이 다른 것보다 훨씬 더 나을 수 있는지 궁금할 수 있습니다. 관건은 넷코드가 불확실성을 어떻게 처리하느냐에 있습니다. 원격 플레이어로부터 정보가 없을 때는 더보기…

격투 게임이 지연 기반 넷코드 및 롤백 넷코드를 사용하는 방법에 대한 설명 1 – 기본 이론, 지연 기반(delay-based) 넷코드

격투 게임이 지연 기반 넷코드 및 롤백 넷코드를 사용하는 방법에 대한 설명 네트워크를 통한 최적의 플레이를 위해 게임을 디자인하는 방법 언제든지 격투 게임 커뮤니티를 돌아다니면 온라인에서 격투 게임을 하는 것이 왜 답답한 경우가 있는지에 대한 토론을 보게 될 것입니다. 순간적 반사작용(twitch reflexes)와 플레이어의 반응을 기반으로 만들어진 장르인 격투 게임은 오프라인에서 더보기…

Swift(스위프트): 튜토리얼을 통한 디자인 패턴: MVVM (Model-View-ViewModel) 2

원문 MVVM in iOS Swift   새 애플리케이션을 구축할 때마다 항상 새 프로젝트에 어떤 아키텍처 패턴을 선택해야 하는지에 궁금할 수 있습니다. iOS에서 가장 많이 사용되는 아키텍처 패턴은 MVC입니다. 대부분의 개발자는 프로젝트에 MVC 패턴을 사용합니다. 소규모 프로젝트에는 MVC가 잘 작동하지만 프로젝트 크기가 증가하기 시작하면 소스 코드가 지저분해지기 시작합니다. 아키텍처 패턴을 사용하는 더보기…

Swift(스위프트): 튜토리얼을 통한 디자인 패턴: MVVM (Model-View-ViewModel) 1

  원문 Design Patterns by Tutorials: MVVM   버전 Swift 4 iOS 11 Xcode 9   튜토리얼을 통한 디자인 패턴: MVVM (Model-View-ViewModel) 上 MVVM(Model-View-ViewModel)은 오브젝트를 세 개의 개별 그룹으로 분리하는 구조적인 디자인 패턴입니다. 모델(Model)은 애플리케이션 데이터를 보유합니다. 일반적으로 구조체(struct) 또는 간단한 클래스(class)입니다. 뷰(View)는 화면에 시각적 요소와 컨트롤을 표시합니다. 일반적으로 UIView의 더보기…

iOS 앱 포트폴리오: 나만의 오르골 만들기 (Make My MusicBox) 애플 앱스토어 출시 📱

나만의 오르골(뮤직 박스) 악보를 만들고 재생, 공유할 수 있는 나만의 오르골 만들기 Make My MusicBox 앱이 출시되었습니다.   나만의 오르골 만들기 Make My MusicBox 프로모션 영상   사용 도구 Swift, Xcode   앱스토어 링크 나만의 오르골 만들기 Make My MusicBox (모든 국가 출시)   깃허브 링크 https://github.com/ayaysir/MusicBox   제작 시기 더보기…

Swift(스위프트): 언어 현지화(로컬라이제이션 Localization) – 다국어 지원 앱 만들기

스위프트(Swift)를 사용한 iOS 프로젝트에서 로컬라이징하는 방법입니다. 프로젝트 세팅 스토리보드 로컬라이징 코드 내 텍스트의 로컬라이징 변수값을 사용하는 어순이 바뀌는 언어의 로컬라이징 info.plist 로컬라이징   1. 프로젝트 세팅 프로젝트 세팅의 PROJECT > Info 에서 Localizations 아래에 있는 + 버튼을 클릭합니다.   여기서는 한국어(ko)를 선택하도록 하겠습니다. 여러 언어를 추가할 수 있습니다.   기본 더보기…

Swift(스위프트): 원형 버튼 만들기 (스토리보드)

가로 세로 크기가 동일한 정사각형 버튼에서 cornerRadius 값을 버튼 너비(width)의 50%을 주면 원형 버튼이 됩니다.   @IBOutlet으로 연결된 버튼 또는 수동으로 만든 버튼을 원형으로 만들기 @IBOutlet weak var button: UIButton! // viewDidLoad(_:) 등 함수 안에 작성 button.layer.cornerRadius = 0.5 * button.bounds.size.width button.clipsToBounds = true   extension으로 만들어서 재사용하기 프로젝트에 다음 더보기…

Swift(스위프트): NSCoding(NSSecureCoding)을 이용한 클래스 객체 직렬화(바이너리 인코딩)

이 예제는 Swift에서 메모리상에 있는 객체를 직렬화(정확하게는 바이너리 형태로 압축 인코딩)한 뒤 저장 장치에 파일 형태로 저장하고 다시 불러오는 예제입니다. 이 예제는 인스턴스를 파일 형태로 주고받을 경우에 사용하고, 네트워크에서 주로 교환되며 JSON으로 사용 가능한 경우는 JSON을 사용하는 것이 좋습니다. NSCoding은 원칙적으로 클래스(NSObject를 상속받는)에서만 가능하고, 구조체(struct)는 사용이 불가능합니다. 다만 별도의 트릭을 더보기…

Swift(스위프트): Firebase(파이어베이스) 인증 기능을 이용한 회원 가입 기능 구현 2 – 프로필 사진 올리기 (스토리보드)

Swift(스위프트): Firebase(파이어베이스) 인증 기능을 이용한 기초 로그인 로그아웃 구현 (스토리보드) Swift(스위프트): Firebase(파이어베이스) 인증 기능을 이용한 회원 가입 기능 구현 1 (스토리보드)   지난번 글에서 프로필 사진을 제외한 모든 정보로 회원가입 하는 것을 다뤄봤으므로, 이번에는 사진을 업로드하는 과정을 진행하겠습니다. 사진 파일 업로드는 Firebase의 Storage 서비스를 이용합니다. 프로필 사진을 업로드할 때 원본 더보기…