The Thing v Unreal 5
The Thing v Unreal 5. Ne jako film, ale hra. Když už se žádná herní společnost nebo vývojář nemá k tomuhle vytvořit, tak i kdyby to mělo trvat věčnost (nebo to udělá někdo jiný), tak si to v tom Unreal enginu pokusím udělát sám. S kódem (a jak to to dát do toho enginu) mi pomůže Claude.ai (už jsem vyzkoušel že dokáže vytvořit funkční python kód na monitorování URLs funkčnosti stránek) a s modely Meshi.ai. Už mám nějaký ten plán. Začal jsem s tím seznamováním Unreal enginu. Prozkoumávání nabídek, stahováním assetů z toho obchodu, jejich umistováním v prostředí, pokusem vytvoření vody jako materiálu. ) - asi to bude docela dosttěžké, ale krůček po krůčku...zatím co mám je prostě jedna částkrajiny s pár pohozenými assetama.Co plánuji je ještě to trochu upravit ten level (ale stejně to bude zatím takový provizorní jenom k tomu abych tam mohl vyzkoušet ty mechanismy až je tam implementuji), dát tam nějaké takové ´boudy´ do kterých dám nějaké věc i jako stoly, postele pro potřebu spánku, wc/sprcový kout/vanu (tu jsem vděl někde že mám v assetech) pro hygienu, pití propotřebu žízeň, jídlo pro potřebu hladu aby to třeba neleželo jen tak v tom prostředí. Plus ještě plánuji potřebu socializace a sexu. Což by mohlo být zajímavé neboť pokud jste viděli jakýkoliv z těch dvou The Thing filmů, tak víte že nějaká forma socializace může být velmi nebezpečné.Ale pro začátek, tyhle poteby asi vynechám. Co ještě chci jeudělat pár věcí v Meshy.ai které budu potebovat. Potomse možná podívat po nějakých Unreal videiích týkající se Unreal 5. Třeba co setýče stavby levelu. A těch AI nástrojů které by mi mohli pomoct s těmi věcmi do toho mého projektu
Tady je ten můj postup (v angličtině)
Výtažek z chatu s Claude.ai -
Probably first step what I need would be create enviroment, level (and building/rooms), then place all important object what would serve like tools for fullfiment of needs, then making these object to be able to interact with them (by me and other AIs/players), place MetaHumans inside level (I think 8 players could be good number with 1 which is already infected or maybe 0 and would be just enviroment or wild animals which would could transfer infection), then do that need/infection system and like last stuff would be giving NPC their AIs as I wrote last. And also probably some wining/losing condition. Is this good plan?
Edit
Your plan sounds well-structured and logical. Let's break it down step by step:
Create environment and level:
Use Unreal's level editor to design your building/rooms
Consider using modular assets for quicker assembly
1.Place interactive objects:
Add objects for need fulfillment (e.g., food, beds, showers)
Use the "Interactive" property in the details panel to make objects interactable
2.Set up object interaction:
Create a base class for interactive objects
Implement interaction logic (e.g., BlueprintImplementableEvent for interaction)
3.Place MetaHumans:
Import MetaHumans into your project
Place 8 characters in the level
4.Implement needs/infection system:
Create the CharacterNeedsComponent as discussed earlier
Attach this component to each character
5.Develop AI for NPCs:
Create AI controllers for each NPC
Implement Behavior Trees for decision-making
6.Set up win/lose conditions:
Create a GameMode class to manage game state
Implement logic for victory (all infected or all clean) and defeat
This is indeed a good plan. A few suggestions:
Start with a simple prototype. Get basic functionality working before adding complexity.
Test each system individually before integrating them.
Consider using Unreal's replication system early if you plan for multiplayer.
For the infection origin, you could:
Start with one infected character
Have environmental sources (like the wild animals you mentioned)
Implement a random infection event after a certain time
Jinak na konci by to měla být dokonalá videoherní klon těch filmových Věcí. Stejné postupy infekce, stejná pravidla infekce, stejná paranoia, ale s potřebami tak trochu ve stylu The Sims nebo The Ship. S nějakou slušnější umělou inteligencí. Přece jenom to bude potřeba když by se ti mechanismy měli vyzkoušet ve více hráčích (i kdyby to měli být NPC)
Jako existuje jedna hra ala The Thing, multiplayerová hra, ale ta se zdá být totálně mrtvá. A já nechci aby ta případná hotová hra byla závislá na tom hrát to s někým dalším. Vlastně je to i jedna profesionální herní adaptace, ale to je zase lineární průchod, kde chybí ta sandboxová část a nejsou tam ani ty potřeby. Ještě mám v záloze nápad na hru ala Saw série. U ní bych chtěl postupovat úplně stejně.
Ještě ukázka těch kódů
Claude.ai -
I see. You've got a comprehensive set of needs and an interesting infection mechanic inspired by "The Thing". Let's outline how we might implement this in Unreal Engine:
Needs System:
Create an enumeration for the needs:
cppCopyUENUM(BlueprintType)
enum class ECharacterNeed : uint8
{
Hunger,
Thirst,
Hygiene,
Sleep,
Socialization,
Sex
};
Create a struct to hold need data:
cppCopyUSTRUCT(BlueprintType)
struct FNeedData
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite)
float CurrentValue;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
float DecreaseRate;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
float CriticalThreshold;
};
Character Component:
Create a component to manage needs and infection:
cppCopyUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))
class YOURPROJECT_API UCharacterNeedsComponent : public UActorComponent
{
GENERATED_BODY()
public:
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Needs")
TMap<ECharacterNeed, FNeedData> Needs;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Infection")
bool bIsInfected;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Infection")
float InfectionProgress;
UFUNCTION(BlueprintCallable, Category = "Needs")
void UpdateNeeds(float DeltaTime);
UFUNCTION(BlueprintCallable, Category = "Needs")
void FulfillNeed(ECharacterNeed Need, float Amount);
UFUNCTION(BlueprintCallable, Category = "Infection")
void UpdateInfection(float DeltaTime);
UFUNCTION(BlueprintCallable, Category = "Infection")
void AttemptToInfect(ACharacter* Target);
};
Implement the functions:
In the .cpp file:
cppCopyvoid UCharacterNeedsComponent::UpdateNeeds(float DeltaTime)
{
for (auto& Need : Needs)
{
Need.Value.CurrentValue -= Need.Value.DecreaseRate * DeltaTime;
Need.Value.CurrentValue = FMath::Clamp(Need.Value.CurrentValue, 0.0f, 100.0f);
}
}
void UCharacterNeedsComponent::FulfillNeed(ECharacterNeed Need, float Amount)
{
if (Needs.Contains(Need))
{
Needs[Need].CurrentValue += Amount;
Needs[Need].CurrentValue = FMath::Clamp(Needs[Need].CurrentValue, 0.0f, 100.0f);
}
}
void UCharacterNeedsComponent::UpdateInfection(float DeltaTime)
{
if (bIsInfected)
{
InfectionProgress += DeltaTime;
// Implement infection progression logic here
}
}
void UCharacterNeedsComponent::AttemptToInfect(ACharacter* Target)
{
if (bIsInfected)
{
UCharacterNeedsComponent* TargetNeeds = Target->FindComponentByClass<UCharacterNeedsComponent>();
if (TargetNeeds && !TargetNeeds->bIsInfected)
{
// Implement infection chance and logic here
}
}
}
Tick function:
In your character's Tick function, call these update functions:
cppCopyvoid AYourCharacter::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
UCharacterNeedsComponent* NeedsComp = FindComponentByClass<UCharacterNeedsComponent>();
if (NeedsComp)
{
NeedsComp->UpdateNeeds(DeltaTime);
NeedsComp->UpdateInfection(DeltaTime);
}
}
Komentáře
Okomentovat