Ну, как основной совет, на ПК я бы сказал: «Не думайте, что ваш пользователь хочет работать в полноэкранном режиме». А в оконном режиме выберите идеальное соотношение и просто используйте его напрямую.
Я думаю, что пользователи обычно принимают черные полосы, когда представлены с полноэкранным контентом. Таким образом, стратегии 3 и 4 являются приемлемыми, если не идеальными. У них есть преимущество в том, что вы всегда знаете, сколько контента вы визуализируете: т.е. никаких хитрых ошибок, которые возникают только при работе в широкоэкранном режиме.
Если вы пытаетесь быть адаптивным, определяя соотношение пользователей с помощью разрешения экрана и показывая как можно больше контента, вам придется по-разному учитывать контент с высоким и низким приоритетом. Высокоприоритетный контент - это то, что пользователь обязательно должен видеть на экране, если он находится за кадром, игра терпит неудачу. Так что это такие вещи, как элементы HUD и UI, аватар игрока и все, с чем они взаимодействуют. Контент с низким приоритетом - это то, что, если оно на экране, то это хорошо, но если оно за кадром, это не проблема. Например: фоновая графика и вещи, которые достаточно далеко от аватара.
Предполагая, что у вас есть UI / HUD, который накладывается поверх некоторого «физического» 2D-мира, тогда это достаточно просто. Предметы с низким приоритетом - это просто, просто убедитесь, что область просмотра 4: 3 центрирована на интересных вещах, а затем нарисуйте столько объектов с низким приоритетом, сколько вы можете расположить слева или справа. Высокоприоритетные вещи в 2D-мире (например, ваш персонаж, враги, с которыми ваш персонаж непосредственно сражается) всегда должны храниться в окне просмотра 4: 3. Т.е. не нужно, чтобы ваш игровой код увеличивал камеру, чтобы воспользоваться преимуществами дополнительного экрана, потому что тогда у вас будет игровой код, действующий по-разному в широкоэкранном и нет. Пусть в игровом коде предполагается, что мир рендерится в 4: 3, и пусть ваш код рендеринга будет знать, что на самом деле есть нечто большее, чем видимое.
К разметке элементов UI / HUD можно подойти одним из двух способов:
- Динамическое позиционирование: укажите все ваши элементы относительно краев экрана (т.е. не все относительно 0,0). В зависимости от вашего соотношения сторон элементы будут располагаться ближе или дальше от центра экрана. Плюсы: позволяет зацепить вещи по углам и заставить их «просто работать». Минусы: Сложно сделать так, чтобы макет работал хорошо в центре, и риск перекрытия элементов
- Консервативное статическое позиционирование: выложите все свои элементы в формате 4: 3 и просто сместите их при работе в широкоэкранном режиме. Плюсы: простая, однозначная логика расположения / координаты. Минусы: оставляет визуальное мертвое пространство слева и справа от элементов управления вашего пользовательского интерфейса, где вы увидите 2D-мир на заднем плане, но без пользовательского интерфейса.