Анальник-наносек, вот скажи мне, я хочу сделать игру как Portal 2. Мне для этого надо нанять анальника-сеньора, чтобы он мне сделал математику / архитектуру порталов на выбранном движке? Предположим UE, в меньшей степени склоняюсь к Юнити. Или справится и мидл с таким хардкором? Или нужна целая команда анальников?
Потому что чатжопа и близко не может реализовать такое. А всё, что я в интернете видел платное или бесплатное — хуита отдаленно напоминающая механику порталов. Там либо криво телепортация работает, либо проецируется криво текстура, либо в пизду идет оптимизация.
Тз грубо говоря: масштабируемый проект на анриле с работающими порталами. Всю остальную лабуду с кнопками и постами я и сам смогу на блюпринтах. Сколько такое стоит под ключ?
>>334358344 (OP) Тебе человек 20 минимум надо для нормальной 3д игры даже на готовом халявном движке. Я лет 10 газад рпг сделал изометрическую в соло (с готовой графикой), заебался просто вкрай, несколько лет пахоты.
>>334358432 >Ты просто не умеешь пользоваться нейронкой Ну может сеньору помидору она и сможет выдать необходимое. Но так синьор и сам такое знает и понимает. А мне она хуйню выдаёт
>>334358344 (OP) В роблоксе есть клон портала блядь, идеально работающий. TUNELLER. В роблоксе блядь опять же. Может ты ебнутый фанат габена который просто любые порталы не от валв говном поливать будет?
>>334358344 (OP) Дай нейроке сначала задание создать простой неэвклидовый движок с поддержкой порталов. Потом допиливай. Сходу тебе готовое не одна нейронка не сделает
А зачем тебе? Как ты без навыков программирования собрался делать фулл игру? Даже если чел был бы, то по итогу сделал игру он, а не ты. Он близким человеком быть должен.
А про механику порталов это вообще пиздец. Это тяжело было программировать и работает оно на костылях.
>>334359191 Попросил сделать поэтапный план и выполнить первый этап. На нем уже фейл. Он даже не смог через с++ рендер текстуру на шейп «портала» натянуть правильно (по этому простому пункту есть туторы на ютуба даже как раз под задачу портала)
>>334359357 >Как ты без навыков программирования собрался делать фулл игру? У меня есть навыки. Экспедицию 33 видел? Сделана на блюпринтах (нодовый кодерский редактор в анриле)
>>334358344 (OP) Для портал нахуй не нужен спец движок брать универсальный, все что в игре сложного будет писать - все равно писать самому, так что проще библиотек нужных взять и слепить самому все
>>334360115 >Для портал нахуй не нужен спец движок брать универсальный Мне надо уе потому что дальше я сам смогу в нем хуевертить. Только кор-механику надо реализовать
class UStaticMeshComponent; class UBoxComponent; class USceneComponent; class USceneCaptureComponent2D; class UTextureRenderTarget2D; class UMaterialInterface; class UMaterialInstanceDynamic;
/ A single portal surface. Two portals are linked together via LinkTo(). Responsibilities: - Render what is visible "through" the portal using a SceneCapture2D + render target. - Detect when an actor crosses the portal plane and teleport it to the linked portal, preserving relative position, orientation and velocity (momentum).
Convention: the portal's local +X (actor forward) is the surface normal, pointing OUT of the wall toward the player. The teleport math is a 180 deg rotation about the portal's up axis, which is the standard Portal-style mapping. / UCLASS() class PORTALCORE_API APortal : public AActor { GENERATED_BODY()
/ Link this portal and Other together (both directions). / UFUNCTION(BlueprintCallable, Category = "Portal") void LinkTo(APortal Other);
/ Reposition the portal onto a surface (used by the portal gun). / UFUNCTION(BlueprintCallable, Category = "Portal") void PlaceAt(const FVector& Location, const FRotator& Rotation);
/ The other end of this portal pair. / UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Portal") TObjectPtr<APortal> LinkedPortal;
/ Material that samples a render-target parameter named "PortalTexture" with screen UVs. / UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Portal") TObjectPtr<UMaterialInterface> PortalMaterial;
/ Fired after any actor is teleported by this portal (hook for VFX / SFX). / UPROPERTY(BlueprintAssignable, Category = "Portal") FOnPortalTeleport OnTeleported;
// --- Teleport math (also reused to place the scene-capture camera) -------------------
/ Map a transform from Source portal frame into Target portal frame. / static FTransform ConvertTransform(const APortal Source, const APortal Target, const FTransform& In); / Map a rotation from Source portal frame into Target portal frame. / static FQuat ConvertQuat(const APortal Source, const APortal Target, const FQuat& In); / Map a direction/velocity from Source portal frame into Target portal frame. / static FVector ConvertVector(const APortal Source, const APortal* Target, const FVector& In);
/ Flat quad the player sees; orient its visible face along actor +X. */ UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Portal") TObjectPtr<UStaticMeshComponent> PortalMesh;
/ Overlap volume straddling the portal plane; gates which actors we test for crossing. */ UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Portal") TObjectPtr<UBoxComponent> TeleportTrigger;
/ Renders the linked portal's view into RenderTarget. */ UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Portal") TObjectPtr<USceneCaptureComponent2D> SceneCapture;
/ True if the segment Start->End passed through the front face of the portal plane. */ bool CrossedPlane(const FVector& Start, const FVector& End) const;
namespace { // 180 degree rotation about the portal up axis: the heart of the Portal mapping. // A point/velocity that goes INTO one portal comes OUT of the other, mirrored. static const FQuat PortalFlip = FQuat(FVector::UpVector, PI); }
APortal::APortal() { PrimaryActorTick.bCanEverTick = true; // Tick late so the player's camera for this frame is already up to date before we // position the scene-capture relative to it. PrimaryActorTick.TickGroup = TG_PostUpdateWork;
PortalMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("PortalMesh")); PortalMesh->SetupAttachment(PortalRoot); // The player must be able to walk straight through the surface. PortalMesh->SetCollisionEnabled(ECollisionEnabled::NoCollision); PortalMesh->SetCastShadow(false);
TeleportTrigger = CreateDefaultSubobject<UBoxComponent>(TEXT("TeleportTrigger")); TeleportTrigger->SetupAttachment(PortalRoot); // Thin along the normal (X), spanning the opening in Y/Z. Tune to your portal size. TeleportTrigger->SetBoxExtent(FVector(40.f, 55.f, 95.f)); TeleportTrigger->SetCollisionProfileName(TEXT("OverlapAllDynamic")); TeleportTrigger->SetGenerateOverlapEvents(true);
SceneCapture = CreateDefaultSubobject<USceneCaptureComponent2D>(TEXT("SceneCapture")); SceneCapture->SetupAttachment(PortalRoot); // We drive the capture manually each frame after positioning it, so don't auto-capture. SceneCapture->bCaptureEveryFrame = false; SceneCapture->bCaptureOnMovement = false; // Final post-processed color so the through-portal view matches the player's view. SceneCapture->CaptureSource = ESceneCaptureSource::SCS_FinalColorLDR; SceneCapture->bEnableClipPlane = true; SceneCapture->bAlwaysPersistRenderingState = true; }
void APortal::BeginPlay() { Super::BeginPlay();
if (PortalMaterial) { PortalMID = UMaterialInstanceDynamic::Create(PortalMaterial, this); PortalMesh->SetMaterial(0, PortalMID); }
// --------------------------------------------------------------------------------------- // Rendering the view through the portal // ---------------------------------------------------------------------------------------
const FIntPoint Size(FMath::Max(1, (int32)ViewportSize.X), FMath::Max(1, (int32)ViewportSize.Y)); if (Size == FIntPoint(1, 1)) { return; // Viewport not ready yet. }
if (!RenderTarget) { RenderTarget = UKismetRenderingLibrary::CreateRenderTarget2D(this, Size.X, Size.Y, RTF_RGBA16f); SceneCapture->TextureTarget = RenderTarget; if (PortalMID) { PortalMID->SetTextureParameterValue(TEXT("PortalTexture"), RenderTarget); } LastViewportSize = Size; } else if (Size != LastViewportSize) { // Keep the render target matched to the screen so the screen-UV sampling stays 1:1. RenderTarget->ResizeTarget(Size.X, Size.Y); LastViewportSize = Size; } }
void APortal::UpdateSceneCapture() { const APlayerController PC = UGameplayStatics::GetPlayerController(this, 0); if (!PC || !PC->PlayerCameraManager) { return; }
// Place the capture where the player's eye maps to on the LINKED portal. Looking at THIS // portal then shows the world as seen "out of" the linked portal. const FTransform CameraXf(PC->PlayerCameraManager->GetCameraRotation(), PC->PlayerCameraManager->GetCameraLocation()); const FTransform CaptureXf = ConvertTransform(this, LinkedPortal, CameraXf);
// Clip everything behind the linked portal so the wall it is mounted on never occludes // the view (the capture sits behind that surface looking out through the opening). SceneCapture->ClipPlaneBase = LinkedPortal->GetActorLocation(); SceneCapture->ClipPlaneNormal = LinkedPortal->GetActorForwardVector();
// Single-bounce: never let a capture see the portal surfaces themselves (avoids feedback). SceneCapture->HiddenActors.Reset(); SceneCapture->HiddenActors.Add(const_cast<APortal>(this)); SceneCapture->HiddenActors.Add(LinkedPortal); }
// Rotate the player's view so the camera comes out facing the right way. if (APawn Pawn = Cast<APawn>(Actor)) { if (AController Ctrl = Pawn->GetController()) { const FQuat NewControl = ConvertQuat(this, LinkedPortal, FQuat(Ctrl->GetControlRotation())); Ctrl->SetControlRotation(NewControl.Rotator()); } }
// Preserve momentum: "speedy thing goes in, speedy thing comes out." const FVector NewVel = ConvertVector(this, LinkedPortal, Actor->GetVelocity()); if (ACharacter Char = Cast<ACharacter>(Actor)) { Char->GetCharacterMovement()->Velocity = NewVel; } else if (UPrimitiveComponent Prim = Cast<UPrimitiveComponent>(Actor->GetRootComponent())) { if (Prim->IsSimulatingPhysics()) { Prim->SetPhysicsLinearVelocity(NewVel); } }
// Stop THIS portal from re-processing the actor, and prime the linked portal so it // doesn't immediately teleport the actor straight back. LastLocations.Remove(Actor); TrackedActors.Remove(Actor); LinkedPortal->TrackedActors.Add(Actor); LinkedPortal->LastLocations.Add(Actor, Actor->GetActorLocation());
/ Drop this onto any Pawn/Character. FirePortal traces from the view point and places the blue (primary) or orange (secondary) portal on whatever surface it hits, then links the pair once both exist. / UCLASS(ClassGroup = (Portal), meta = (BlueprintSpawnableComponent)) class PORTALCORE_API UPortalGunComponent : public UActorComponent { GENERATED_BODY()
public: UPortalGunComponent();
/ Portal actor class to spawn. Assign a Blueprint child of APortal (mesh + material set). / UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Portal Gun") TSubclassOf<APortal> PortalClass;
/ Trace channel used to find portalable surfaces. / UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Portal Gun") TEnumAsByte<ECollisionChannel> TraceChannel = ECC_Visibility;
/ Fire a portal. bPrimary == true spawns/moves the blue portal, false the orange one. / UFUNCTION(BlueprintCallable, Category = "Portal Gun") void FirePortal(bool bPrimary);
FCollisionQueryParams Params(SCENE_QUERY_STAT(FirePortal), /bTraceComplex/ true); Params.AddIgnoredActor(GetOwner()); if (PrimaryPortal) { Params.AddIgnoredActor(PrimaryPortal); } if (SecondaryPortal) { Params.AddIgnoredActor(SecondaryPortal); }
FHitResult Hit; if (!GetWorld()->LineTraceSingleByChannel(Hit, Start, End, TraceChannel, Params)) { return; // Missed every surface. }
const FRotator PortalRot = MakePortalRotation(Hit.ImpactNormal); // Nudge off the wall so the surface does not z-fight or clip the portal plane. const FVector PortalLoc = Hit.ImpactPoint + Hit.ImpactNormal 1.0f;
if (PrimaryPortal && SecondaryPortal) { PrimaryPortal->LinkTo(SecondaryPortal); } }
bool UPortalGunComponent::GetViewPoint(FVector& OutLocation, FRotator& OutRotation) const { if (const APawn Pawn = Cast<APawn>(GetOwner())) { if (AController Controller = Pawn->GetController()) { // Uses the active camera view point (eyes), not the pawn pivot. Controller->GetPlayerViewPoint(OutLocation, OutRotation); return true; } }
FRotator UPortalGunComponent::MakePortalRotation(const FVector& SurfaceNormal) { // Choose an up reference that is not parallel to the normal (handles floor/ceiling). const FVector Up = FMath::Abs(FVector::DotProduct(SurfaceNormal, FVector::UpVector)) > 0.95f ? FVector::ForwardVector : FVector::UpVector; const FVector Right = FVector::CrossProduct(Up, SurfaceNormal).GetSafeNormal(); const FVector OrthoUp = FVector::CrossProduct(SurfaceNormal, Right).GetSafeNormal();
class UCameraComponent; class UPortalGunComponent;
/ Minimal first-person character wired up with a portal gun. Use this directly, or just copy the UPortalGunComponent onto your own character. Input is bound with the legacy input system so it works without extra assets; swap to Enhanced Input if you prefer (see README). / UCLASS() class PORTALCORE_API APortalCharacter : public ACharacter { GENERATED_BODY()
// Let the controller drive look; the body yaw follows movement input. bUseControllerRotationPitch = false; bUseControllerRotationYaw = true; bUseControllerRotationRoll = false; }
void APortalCharacter::FirePrimary() { if (PortalGun) { PortalGun->FirePortal(/bPrimary/ true); } }
void APortalCharacter::FireSecondary() { if (PortalGun) { PortalGun->FirePortal(/bPrimary/ false); } }
----
PortalCore.Build.cs
// Copyright. Portal core mechanic for UE5. using UnrealBuildTool;
public class PortalCore : ModuleRules { public PortalCore(ReadOnlyTargetRules Target) : base(Target) { PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
# PortalCore — Portal-style core mechanic for UE5 (C++)
Ядро как в Portal: портальная пушка, размещение порталов на поверхностях, бесшовная телепортация с сохранением импульса и рендер вида «сквозь» портал через `SceneCapture2D`.
Проверялось на логике UE 5.3–5.5. API порталов от версии движка не зависит.
## Что внутри
| Файл | Роль | |------|------| | `Portal.h/.cpp` | Один портал: рендер вида сквозь себя + телепортация пересёкших плоскость акторов. Статические хелперы `ConvertTransform/Quat/Vector` — вся матимея отображения «портал A → портал B» (поворот на 180° вокруг оси Up). | | `PortalGunComponent.h/.cpp` | Компонент-пушка. `FirePortal(true/false)` трейсит из точки взгляда и ставит синий/оранжевый портал, линкует пару. | | `PortalCharacter.h/.cpp` | Минимальный FPS-персонаж с камерой и пушкой (опционально — можно вешать компонент на свой `Character`). |
## Установка
### Вариант A — отдельный модуль 1. Скопируй папку `Source/PortalCore` в `Source/` своего проекта. 2. В `<Project>.uproject` добавь модуль в массив `Modules`: ```json { "Name": "PortalCore", "Type": "Runtime", "LoadingPhase": "Default" } ``` 3. В `Source/<Project>Editor.Target.cs` и `<Project>.Target.cs` добавь `"PortalCore"` в `ExtraModuleNames`. 4. Regenerate project files → Build.
### Вариант B — без нового модуля (проще) Просто положи `Portal.*`, `PortalGunComponent.*`, `PortalCharacter.*` в `Source/<ТвойМодуль>/`, замени макрос `PORTALCORE_API` на `<ТВОЙМОДУЛЬ>_API`, и добавь в свой `*.Build.cs` зависимости: `Core, CoreUObject, Engine, InputCore`. Файлы `PortalCore.Build.cs`, `PortalCore.h/.cpp` тогда не нужны.
## Обязательный шаг: материал портала
Рендер сквозь портал работает так: `SceneCapture` пишет вид в render target, а материал на меше портала сэмплит этот таргет по экранным UV — получается «окно».
Создай Material `M_Portal`: - Blend Mode: Opaque, Shading Model: Unlit, Two Sided: ✓ - Нода `ScreenPosition` → её UV-выход → в `UV` ноды `TextureSampleParameter2D` - Параметр текстуры назови ровно `PortalTexture` (код пишет в этот параметр) - Выход текстуры → Emissive Color
Материал назначь в свойстве `PortalMaterial` у портала (или в его Blueprint-наследнике).
## Сборка сцены
1. Сделай Blueprint-наследника `APortal` (`BP_Portal`): - назначь плоский меш (плоскость/quad) так, чтобы видимая грань смотрела вдоль +X актора (у стандартного `Plane` нормаль вдоль +Z — поверни меш на Pitch +90°); - отмасштабируй под проём (примерно 90×180 см) и подгони `TeleportTrigger` (`BoxExtent`); - выстави `PortalMaterial = M_Portal`. 2. Персонаж: - либо используй `APortalCharacter` как Default Pawn, - либо добавь `UPortalGunComponent` на свой Character и задай у него `PortalClass = BP_Portal`. 3. Input (Project Settings → Input), для `APortalCharacter`: - Axis: `MoveForward`, `MoveRight`, `Turn`, `LookUp` - Action: `Jump`, `FirePortalA` (ЛКМ), `FirePortalB` (ПКМ) - На Enhanced Input — просто вызывай `PortalGun->FirePortal(true/false)` из своих `InputAction`-хендлеров.
Готово: стреляй двумя порталами по стенам/полу/потолку и проходи сквозь них. Импульс сохраняется — можно делишь «fling» с высоты.
## Как работает матмодель (коротко)
Отображение из системы координат портала-источника в систему портала-приёмника — это поворот на 180° вокруг оси Up портала. Одна и та же формула (`ConvertTransform`): - для игрока в момент пересечения плоскости даёт корректный выход из второго портала; - для камеры захвата ставит её «за» вторым порталом — ровно туда, откуда надо снимать вид, видимый сквозь первый. `ClipPlane` на приёмнике убирает стену за ним из кадра.
Телепорт срабатывает по пересечению плоскости (а не на overlap): каждый кадр для акторов в триггере проверяется смена знака `dot(actor - portal, forward)` с «+» на «−». Скорость поворачивается тем же отображением → «speedy thing goes in, speedy thing comes out».
## Сознательные упрощения (можно расширить)
- Один «отскок» рендера. Порталы, смотрящие друг в друга, не дают бесконечный туннель — для этого нужен рекурсивный рендер в несколько проходов. - Нет клона-двойника на стыке: в момент перехода тело не торчит из второго портала половиной модели. Лечится дублирующим мешем + clip plane на персонаже. - Поворот вида** берёт yaw/pitch из контрол-ротатора; для порталов на полу/потолке всё работает, но «заваливание» горизонта при нестандартных осях не докручено. - `SceneCapture` с `FinalColorLDR` каждый кадр — самый дорогой кусок. На каждый видимый портал — отдельный проход рендера. Прячь капчур, когда портал не в кадре, при оптимизации.
// Snapshot first: TeleportActor mutates TrackedActors/LastLocations as it hands the actor // over to the linked portal, so we must not iterate the live set. TArray<TObjectPtr<AActor>> Snapshot = TrackedActors.Array(); for (AActor Actor : Snapshot) { if (!IsValid(Actor)) { TrackedActors.Remove(Actor); LastLocations.Remove(Actor); continue; }
Готово. Собрал самодостаточный модуль PortalCore — ядро порталов как в Portal.
Что реализовано Портальная пушка — PortalGunComponent.cpp: трейс из точки взгляда, постановка синего/оранжевого портала на стену/пол/потолок по нормали поверхности, авто-линковка пары. Бесшовная телепортация — Portal.cpp: срабатывает по пересечению плоскости портала (а не на overlap), переносит игрока и физические объекты, поворачивает вид и сохраняет импульс («speedy thing goes in, speedy thing comes out»). Рендер сквозь портал — SceneCapture2D → render target по размеру экрана, материал сэмплит по экранным UV → эффект «окна». Есть ClipPlane, чтобы стена за приёмником не лезла в кадр. FPS-персонаж — PortalCharacter.cpp с камерой и пушкой (или просто вешаешь компонент на свой Character). Ядро матмодели Вся «магия» в трёх статиках Convert в Portal.h — отображение «портал A → портал B» это поворот на 180° вокруг оси Up. Одна формула обслуживает и телепорт игрока, и позиционирование камеры захвата (ставит её за вторым порталом — ровно откуда снимать вид).
Один обязательный шаг руками Код не отрендерит портал без материала. В редакторе сделай M_Portal (Unlit, Two-Sided): нода ScreenPosition → в UV у TextureSampleParameter2D с параметром PortalTexture → в Emissive. Назначь его в PortalMaterial. Полная пошаговая настройка (модуль, BP_Portal, input) — в README.md.
Сознательные упрощения Один «отскок» рендера (нет бесконечного туннеля при порталах друг напротив друга), нет клона-двойника на стыке перехода, поворот вида берёт yaw/pitch. Всё помечено в README в разделе «расширить».
>>334360724 Просто он делит картинку на квадратики и воспринимает каждый как 1 токен. Чем больше квадратиков тем лучше результат распознавания изображения. Гоям разрешают делать условные 8х8 тогда как корпорации могут делать хоть 1000х1000 по своей еврейской подписке. Соответственно одна и та же модель в руках гоев и в руках корпораций выдает абсолютно разный результат.
>>334360825 >как корпорации могут делать хоть 1000х1000 по своей еврейской подписке У тебя инторнет скоро по подписке в 60$ за Гб, а ты тут про пиксели затираешь. Или ты с Ихгаиля? Тогда, ладн, чо
>>334358344 (OP) Когда-то я думал, что не могу сбацать игру мечты только из-за бедности и невозможности нанять команду прогеров. Теперь за месяц навайбкодил прототип, и мне открылась страшная правда - между разрозненными светлыми идеями и полноценным диздоком ебучая пропасть. Выкинул на свалку 10 итераций прокачки, три разновидности гибели и пять концептов глобальных спеллов, до сих пор трясусь от гексагональной сетки и чрезмерной свободы, выдаваемой игроку.
>>334358344 (OP) В чем смысл если такая игра уже есть и 99% работы сделано за тебя? Делай глобальный мод на портал, многие разрабы как раз с модов и начинают.
>>334360383 > Мне надо уе потому что дальше я сам смогу в нем хуевертить. Только кор-механику надо реализовать чел что-то я тебе нихуя не верю, если бы ты реально мог в этой сфере, то у тебя бы и вопросов не было и получал бы ты столько, что ты без проблем нанял бы уже людей из нашей сферы за часть своей зп
>>334358344 (OP) >Анальник-наносек, вот скажи мне >Мне для этого надо нанять анальника-сеньора В среднем понадобится дохуя средних сеньоров, штук 10.
Но таких кадров, как в Valve, которые сделали это - почти нет. Ты можешь расчитывать на забагованную копию оригинала. И зависит от уровня и производительности твоих тимлидов
>Предположим UE Выбор, лучше многих >В меньшей степени склоняюсь к Юнити. Физика говно там и получится говно у тебя. Под капотом потешные шарпы наркоманские
Source хорош именно физикой, тем что там Portal играется хорошо, смекаешь? Игра на физику, физический движок
>Всю остальную лабуду с кнопками и постами я и сам смогу на блюпринтах. Ну тут ты разбежался, реально, у твоих 10 сеньоров это может занять лет 20. А может и год. Никто не знает, кого наймёшь
Забыл, до пизды. Просто дохера. Нереально много. И нужны штучные спецы. Расчехляй десятки миллионов долларов минимум, львиная доля которых уйдёт на поиск спецов.
Просто до пизды сколько это стоить будет, бро, очень дохуя. Я надеюсь ты не наркоман и осознаёшь это
И да, в твоей стране может таких спецов и не быть, не важно, сколько ты всрёшь на их поиск. Цена разработки в зависимости от локации может меняться нна порядки
>>334361854 >В среднем понадобится дохуя средних сеньоров, штук 10. В валв один человек это спроектировал всё и даже рассказал как потом на стримах
Прям 10 человек надо? А что там параллелить?
>>334361854 >Source хорош именно физикой, тем что там Portal играется хорошо, смекаешь? Игра на физику, физический движок в Портал и даже во втором не юзается физика почти. В хл2 примеров интереснее больше с ней
>>334362052 >Вы все постоянно забываете главное, вероятность создать такое случайно - меньше вероятности попасть в авиакатастрофу. Я о том, что кто-то делает игры, пока другие мечтают
Поэтому я поставил вопрос ребром. Чатгпт сказал, что хватит одного помидора и 5-15к баксов ему
>>334362477 >В валв один человек это спроектировал всё и даже рассказал как потом на стримах. Читай внимательно состав команды в 50 человек в титрах, а не высказывание воннаби-тимлид макаки, которую вот-вот уволят. Нет там главного разраба, а одарённому, если он есть, уж точно нет никакого резона искать хайпа и пиариться. Все знают - кто он, и так.
>Прям 10 человек надо? А что там параллелить? И не абы каких, а лучших. Если хочешь такой же популярный продукт сделать. Это самый-самый минимум.
>в Портал и даже во втором не юзается физика почти. В хл2 примеров интереснее больше с ней Она беспрецендентно идеальна, особенно для своего времени, потому и не ощущается. Физически точна и филигранна. Люди замечают только несовершенство в играх, это сами разрабы валв так говорят. Людям просто приятно прыгать в порталы, когда их интуитивное понимание прыжка сходится с реальным видом. И даже 100 раз прыгнуть - всё равно приятно. Просто в движке нет недочётов, багов.
>>334362643 >Поэтому я поставил вопрос ребром. Ну вот тебе и ответ, накопи кучу лямов. Это гораздо проще, чем сделать очередного "Чёрного лебедя". Вещи просто стреляют, если на маркетинг потрачен миллион долларов.
>>334363563 Ну хуле, будет механика говна +/- Тогда опытного тимлида хватит, только портал это не одна механика, а ещё целая куча других моментов, сделанная на высшем уровне для своего времени
>>334361656 >Вопрос в амбициях. Минималистичная тактика на мобилки. Даже такой простой жанр ПИЗДЕЦ как сложно делать.
А вообще, советую подождать годик-другой, может, ИИ тебе и заменит сеньоров-помидоров. Напомню, пару лет назад инструменты вроде opencode были научной фантастикой.
>>334358344 (OP) Нужен широмыслящий математик, который знает анрил, чтобы как портал. Габеновские порталы такие охуенные потому что габен прекрасно знает своё двигло, втч его недостатки, может его модифицировать и правильно подбирать костыли. Там сама технология порталов это один гигантский костыль. Я бы сказал даже коляска. С другой стороны их методы вполне выглядят универсальными для других движков. Погугли как делали портал или разбор багов или что-то в таком духе и +- приблизительно поймёшь что и как. Настоящие порталы ни одного двигло не потянет.
>>334364904 С другой стороны, я думаю, половина треда (или даже весь тред) не видели современных Русских фрилансеров, работающих за 10 к. И что они могут сделать за 50
>>334366047 Да можешь хоть код выше по треду взять и прикрутить, если выйдет, будет у тебя забагованная механика говна с кучей косяков. И не очень популярное поделие
>>334358344 (OP) Мне кажется, самое сложное в порталах - это чтобы отображалось корректно, что внутри портала. А если для начала просто сделать оранжевый и синий овалы и соотвесттвенно реализовать телепорт при входе в один, то задача сильно легче. Потом уже разбираться, как сделать корректное отображение. Разве нет?
>>334358344 (OP) тупые вопросы какие-то. Ну да тебе нужен математик какой-нибудь неплохой и достаточно одного кодера уровня синьор на анриле. Если речь про эту одну механику.
Если тебе полноценную игру делать, то нужно человек 10 будет и год работы.
>>334369394 Нет, не будет, там делать нехуй, если есть много времени. В игре 1 уникальная механика, все остальное в сток ue-бане имеется или докручивается с минимум усилий. Ассет лист тоже не слишком объемный: лаборатория и белые вибраторы с лазерами, иногда лужи - все.
>>334358344 (OP) >Сколько такое стоит под ключ? Недорого. Тысяч пять-шесть рублей. Я вебмрил делал в свободное время для фана. Но окружение должно быть малополигонально, так как порталы и зеркала жрут кратно ресурсы.
>>334364362 >сама технология порталов это один гигантский костыль Двачую. Но обычно так бывает, что всё охуенное и прорывное - костыли из говна и палок. А корпоративный выверенный и продуманный чистокод - говно из жопы.
Я анальник программист на анриле, специалиизруюсь на игровой логике и физике, стоит начать с того что на сурсе был очень хороший физический движок, многие не знают, но там просто модифицированный/адаптированный havok, вальвосы сами очень мало что сделали, но хавок был нереально хорош даже сейчас, в анриле сейчас используется Chaos Physics, это не говно, это отлично подходящее решение большинству типичных проектов, но это не уровень хавока даже не близко, физический движок тебе писать никто не будет, удачи в принципе найти таких спецов не то что в россии, в мире, условно я, могу конечно, но у меня нет энтузиазма делать что то задаром, а у тебя нет таких денег, тем более что никто в соло это не напишет, нужна специализированная команда человека 3-4 и пару лет разработки только физики, значит самое разумное взять анриловский хаос, дальше механика порталов, в своей основе супер простая штука, переместить объект из точки а в точку б, сохранив импульс тела, самое там сложное это сделать так чтобы это выглядело нормально, кучу разборов в интернете есть как это и какие костыли, механика в основе простая и её многие реализуют даже на гейм джемах, сама сложность в дублировании объектов, рендере и собственно производительности от такого местами тройного рендера, можешь глянуть deadlock от вальвов новый, у персонажа лакей они НЕ ОСИЛИЛИ нормальный рендер порталов, представь себе, низкое разрешение, кривое перемещение, отсутствие дублирования объектов, marvel rivals - НЕ ОСИЛИЛИ, с физикой получше но фпс садит тоже, в портале что 1 что 2 не было источников динамического света к слову, весь свет запечен, потому что свет через портал передать нормально нереально, а например какую нибудь тень пускать вообще забей, если конечно не рей трейсингом но та же проблема производительности
короче проблема что тебе нужны спецы разных областей, графики, физики, логики, в добавок к этому нужен художник, звукарь и композитор, а ну и конечно кто то кто будет раздавать команды, при этом разбираясь вообще во всех этих областях хоть чуть чуть чтобы координировать, те кто работают на фрилансе, без обид, но либо бездари, либо очень неопытные люди, да даже студий очень много бездарных, хороших ребят, даже с перегретым рынком, найти очень тяжело, и я бы даже сказал что еще тяжелее сейчас из-за засилья нейронок, куча дебиков которые просто копируют вставляют код совсем не думая, я сам зам тимлида на проекте, не представляешь сколько через меня таких прошло, а ну и еще тебе надо найти таких которым будет не настрать на твою идею и твой проект, ты этого достигаешь либо интересной идеей, либо деньгами, и всё равно это не гарантировано, люди на такой тяжелой умственно работе очень часто выгорают, и ты никакими деньгами от этого их не спасёшь
короче сделать очередную поделку на анриле я тебе сам забабахаю за месяц за 100к, и ассеты с тебя, запилить что то реально годное - года 2-3, и миллионов 10 только на прогеров если не боишься брать дешевых и начинающих, 20-30 если кого поопытнее, хотя лично знаю проекты с бюджетом около ляма в год, но там люди вообще не держатся за места, и проекты к слову всё еще не закончены спустя 6-10 лет
>>334374479 Opencode, комбинирую все нейронки из подписки. До спрайтов (к счастью, графики планируется относительно немного) дойдет ой как нескоро - сеттинг будет натянут на геймплей.
>>334358344 (OP) Да справится-то и мидл, которому твоя идея в душу запала. Просто это вопрос времени. Сядь лампово с пацанами и обнадёжь их, что ты с ними до конца и готов понимать-принимать. Мемами там попререкидывайтесь, посидите в дисике за пивом. Будет тебе ламповый инди-проект. мимоведущийпрогер
>>334376258 Где ты тут годноту увидел? Очередное больное на голову шизло что-то высрало на тему игрокала. Это тупорылое говно даже не понимает зачем людям игры нужны, но уже маняфантазирует про создание клона портала.
ТЫ РЕШАЕШЬ СДЕЛАТЬ ИГРУ КАК ПОРТАЛ 2 @ НАНИМАЕШЬ СЕНЬОРА ЗА БОЛЬШИЕ БАБКИ @ ОН ГОВОРИТ ЧТО МАТЕМАТИКА СЛОЖНАЯ @ ПОРТАЛЫ РАБОТАЮТ КРИВО @ ПРОБУЕШЬ С МИДЛОМ ЧТОБЫ СЭКОНОМИТЬ @ ТЕКСТУРЫ ПРОВАЛИВАЮТСЯ В ПУСТОТУ @ СОБИРАЕШЬ ЦЕЛУЮ КОМАНДУ @ ОПТИМИЗАЦИЯ УХОДИТ В ПИЗДЕЦ @ ПРОЕКТ РАЗДУВАЕТСЯ ДО МИЛЛИОНОВ @ В КОНЦЕ У ТЕБЯ ТОЛЬКО ПУСТАЯ ПАПКА И ДОЛГИ
@monkey сколько же ОП потратит на игровую механику порталов и кого ему стоит нанять?
OP'у для нормальной реализации порталов в UE лучше нанимать сеньора с опытом в кастомном рендере и физике, мидл потянет только если уже делал что-то похожее, иначе будут косяки с оптимизацией и проекцией. Целая команда не нужна на старте, если остальное на блюпринтах. Под ключ такая механика обойдется в 400-800 тысяч рублей в зависимости от исполнителя и правок.
@monkey а если прикупить годных ИИ-агентов (и каких?), то получится сэкономить наняв джуна без опыта за пожрат?
нет, не сэкономишь. порталы требуют глубокого понимания движка, математики и оптимизации под капотом, а ии-агенты пока на уровне "нарисуй пример", а не "сделай стабильную систему без просадок". джуну без опыта с ними придётся постоянно фиксить баги, и в итоге выйдет дороже, чем сразу взять нормального мидла.
>>334358344 (OP) Для современных видеоигр самое главное это художники и дизайнеры. Программная часть, если у тебя не какие-то особые высоконагруженные вычисления (в портале их нет), сравнительно элементарная и сегодня наверно может быть сделана даже Ии
>>334379121 Какая нахуй архитектура, дебилоид? Проблема порталов в шейдерах, рендере и каким образом их совмещать бесшовно в движок, чтобы всё работало.
>>334379285 7кк и скину готовый код для UE 5. У меня в папочке есть рабочая заготовочка с двойным рендером и готовой физикой.
>>334379741 Представь только, у меня есть кусок этого сладкого кода который работает на древнем железе и максимально оптимизирован. Иногда я открываю его, запускаю геймпелей, проверяю механнику скольжения по поверхностям, механику паркура, работу порталов и оружия, работу сетевого кода, искусно тереблю физические константы и закрываю проект. Гемплей радует каждым кадром.
Ты же так и будешь ебаться с ИИ ничего не создав, потому что ты не можешь в банальное сложение векторов.
>>334381269 А вот если бы у меня был готовый проект, то я бы поделился с анонами.
>не можешь в банальное сложение векторов Чел, я в своё время (когда в вузике учился) на Delphi воксельный движок самописный собирал и много ещё чего. И портал бы собрать смог (тем более с ИИ-шками), но чисто влом.
>>334381993 > А вот если бы у меня был готовый проект, то я бы поделился с анонами. Смысл? Ты слишком нищий чтобы закончить этот проект. Как и я. Когда наработают 1-5кк баксов закончу сам, въебав мултиплатформенную фритуплей игорь. Впринципе немного осталось.
> Чел, я в своё время (когда в вузике учился) на Delphi воксельный движок самописный собирал и много ещё чего. Это всё чушь. Сейчас ты даже вменямый UI для игры не сделаешь, если нет опыта системной архитектуры
>>334358344 (OP) >Тз грубо говоря: масштабируемый проект на анриле с работающими порталами. Ты ёбнутый поридж-долбоеб, сука. Даже в UT3 2007-го года (на Unreal Engine 3) были работающие порталы. Пиздец, поридж блять, мог бы спросить у своей говносетки где еще есть механики порталов как пример
>>334360535 >#include "Kismet/KismetRenderingLibrary.h" >#include "Kismet/GameplayStatics.h" Боже мой, это же буквально библы из UDK (или Unreal Engine 3.5, публичная порезанная версия UE3 для быдла), пиздец. Еще на беседку гонят с их моровиндским движком в фолаче
>>334385629 Это всё хуёня для дилетантов. Каждая игра в конечном итоге оптимизируется под логику, чтобы оно работало на устройствах пользователя. Переход от говна на движке к конечному проекту невозможен без человека который выкидывает 80% говнокода. Правда, это всё для фритуплей параш у которых уровень кода сравним с ядром линукса.
Потому что чатжопа и близко не может реализовать такое. А всё, что я в интернете видел платное или бесплатное — хуита отдаленно напоминающая механику порталов. Там либо криво телепортация работает, либо проецируется криво текстура, либо в пизду идет оптимизация.
Тз грубо говоря: масштабируемый проект на анриле с работающими порталами.
Всю остальную лабуду с кнопками и постами я и сам смогу на блюпринтах. Сколько такое стоит под ключ?