Heroes of Might and Magic Community
visiting hero! Register | Today's Posts | Games | Search! | FAQ/Rules | AvatarList | MemberList | Profile


Age of Heroes Headlines:  
5 Oct 2016: Heroes VII development comes to an end.. - read more
6 Aug 2016: Troubled Heroes VII Expansion Release - read more
26 Apr 2016: Heroes VII XPack - Trial by Fire - Coming out in June! - read more
17 Apr 2016: Global Alternative Creatures MOD for H7 after 1.8 Patch! - read more
7 Mar 2016: Romero launches a Piano Sonata Album Kickstarter! - read more
19 Feb 2016: Heroes 5.5 RC6, Heroes VII patch 1.7 are out! - read more
13 Jan 2016: Horn of the Abyss 1.4 Available for Download! - read more
17 Dec 2015: Heroes 5.5 update, 1.6 out for H7 - read more
23 Nov 2015: H7 1.4 & 1.5 patches Released - read more
31 Oct 2015: First H7 patches are out, End of DoC development - read more
5 Oct 2016: Heroes VII development comes to an end.. - read more
[X] Remove Ads
LOGIN:     Username:     Password:         [ Register ]
HOMM1: info forum | HOMM2: info forum | HOMM3: info mods forum | HOMM4: info CTG forum | HOMM5: info mods forum | MMH6: wiki forum | MMH7: wiki forum
Heroes Community > Heroes 8+ Altar of Wishes > Thread: Reimagining HOMM 7 using Unreal Engine 5, asking for a friend
Thread: Reimagining HOMM 7 using Unreal Engine 5, asking for a friend
waatkaige
waatkaige

Tavern Dweller
posted August 08, 2024 01:16 AM

Reimagining HOMM 7 using Unreal Engine 5, asking for a friend

My friend started working a few weeks ago on a HOMM7 reimagining using UE5 instead of UE3 from the original game. My friend is a hardcore Unreal C++ programmer and is using plain text CSV instead of data tables, for scalability and ease of later modding, as a plain text file is much easier to edit later on because it doesn't need to be recompiled in unreal engine

Anyways one of the current milestones is an easy population of these data tables. See in the picture attached how it currently looks in the current lab environment for my friend's testing. Ideally there would be an easy way to crawl some data from somewhere or deserialize it and then automatically dump it into a plain text file because currently adding data to this data table is still a manual process.

Also, if there are other Unreal C++ programmers in this community, maybe you are available for some brainstorming. My friend's project is going well, just slow. Currently is much easier to provide proof of concept for coding than for visuals, but if needed, probably both can be provided. Visually it's identical to the original HOMM7, just rendered in Unreal Engine 5

Here is a snippet to spawn a random hero in Unreal C++, for fellow programmers

Quote:
ARPGPawn* URPGGameInstance::SpawnRandomHero()
{
TArray<FString> Heroes = GetTableRows(Table_Heroes);

//for now only one anyways, spawn the hero, mount and respective meshes
FString HeroId = Heroes[FMath::RandRange(0, Heroes.Num() - 1)];
ARPGPawn* RandomHero = SpawnAvatar(HeroId, TraitHero);

//handle its mount
FString MountName = RandomHero->GetPawnProperty(GetPropertyPair("Faction", "")).ToString() + "Mount";
RandomHero->SetMount(SpawnAvatar(MountName, TraitMount));

check(RandomHero!=nullptr&&RandomHero->GetMount()!=nullptr);

return RandomHero;
}


Well, that's it. Let me know. Thanks!

 Send Instant Message | Send E-Mail | View Profile | Quote Reply | Link
MattII
MattII


Legendary Hero
posted August 09, 2024 10:44 AM

I'm afraid I don't have much to offer in terms of programming help, but I do have a question. Are you going to do a plain copy of Heroes 7 just with a newer engine? Or are you going to tweak it? Remove some of the more abysmal elements?

 Send Instant Message | Send E-Mail | View Profile | Quote Reply | Link
Slyen
Slyen


Adventuring Hero
posted August 09, 2024 11:12 AM

A very interesting project, I am the modder of h7.5, will it be possible to add the content created by the communities? I'm thinking in particular of the ucp patch as a priority, and why not the factions that were created by the fans?

 Send Instant Message | Send E-Mail | View Profile | Quote Reply | Link
waatkaige
waatkaige

Tavern Dweller
posted August 13, 2024 04:54 AM
Edited by waatkaige at 05:24, 13 Aug 2024.

tl;dr:
`Are you going to do a plain copy of Heroes 7 just with a newer engine?` Currently, it's the easiest way to do it.
`Or are you going to tweak it? Remove some of the more abysmal elements?` AND `Will it be possible to add the content created by the communities?` Ideally scalability is achievable easily. So mix and match of features and models is possible.

Now some screenshots, main menu background is AI generated. just to show some basic Main Menu concept, we are NOT artists, apologies....






Long version:

Sorry for the delay in replying. We are in China (expats) and it's not always easy to go on the other side of the great firewall of China

Anyways, the `how it looks` is in its simplest form, is identical to the original HOMM7.

On the programming side, that is to say on `the how it works` side it's really up to us. And by us I mean all of us, any of us who participate with a valid input to this project, we can implement features that we like from HOMM7 and ignore the ones we don't like and instead implement other features that we like from HOMM6 or HOMM3 or whatever mix and match works for us, as currently the project is having scalability in mind as long as we have a vision and a plan and an easy way to keep track of the vision and the plan in a plain text form

Then feature mix-and-match should be very, very easy to implement by anyone, programmers or not, as long as you have a plaintext editor somewhere.

There are some minimum requirements on the models side but that's where I'm hoping scalability should help. For example currently the meshes have material instances with a parameter for color so Haven hero that belongs to the player is Red color on the Cape and a hero from an enemy team is Blue color and currently that's implemented randomly and automatically but it should be very easy to  give external access to someone to pick and choose colors as they see fit
Also the animations they have certain states such as idle, moving, attacking and as long as any mesh comes with a skeleton that has skeletal animations ready for idle or moving or attacking, the source of the mesh can be from anywhere from any game, be that a HOMM game or Fallout or Borderlands or whatever

Circling back, I would still like to have a way to scrub automatically some information from somewhere, so we can create data tables in plain text on the fly instead of manually adding the way currently it's done because it's just tedious to add 200 units and 50 heroes by hand. So anyone?!?

And some code for random hero color, the color is technically the Team ID...
Quote:
FName URPGGameInstance::GetRandomColor()
{
FColor Color = Colors[FMath::RandRange(0, Colors.Num() - 1)];

FName ColorName;
if (Color == FColor::Red) ColorName = "Red";
else if (Color == FColor::Green) ColorName = "Green";
else if (Color == FColor::Blue) ColorName = "Blue";
else if (Color == FColor::Yellow) ColorName = "Yellow";
else if (Color == FColor::Cyan) ColorName = "Cyan";
else if (Color == FColor::Magenta) ColorName = "Magenta";
else if (Color == FColor:range) ColorName = "Orange";
else if (Color == FColor:urple) ColorName = "Purple";
else if (Color == FColor::Turquoise) ColorName = "Turquoise";
else if (Color == FColor::Silver) ColorName = "Silver";
else if (Color == FColor::Emerald) ColorName = "Emerald";

//remove it for future uniqueness
int32 ColorIndex = Colors.IndexOfByKey(Color);
check(ColorIndex!=INDEX_NONE);
Colors.RemoveAt(ColorIndex);

UE_LOG(LogTemp, Warning, TEXT("Picking %s as color"), *ColorName.ToString());

return ColorName;
}


And a quick log
Quote:

LogTemp: Warning: 0.000000 Done 'BP_PlayerController_C_0 ARPGPlayerController::SetupInputComponent'
LogTemp: Warning: 0.000000 Changed Mode to 'GUI_PreGame'
LogTemp: Warning: 3.013076 Changed Mode to 'GUI_MainMenu'
LogTemp: Warning: 5.454781 Changed Mode to 'Deployment'
LogTemp: Warning: Start Deployment Phase
LogTemp: Warning: Picking Yellow as color
LogTemp: Warning: Hit 127 of type Normal at grid index X 9, Y 1 at X=800.000 Y=-1200.000 Z=0.000
LogTemp: Warning: Over DireWolf


And an example of plain text constants, easy to change as needed

 Send Instant Message | Send E-Mail | View Profile | Quote Reply | Link
Jump To: « Prev Thread . . . Next Thread »
Post New Poll    Post New Topic    Post New Reply

Page compiled in 0.0473 seconds