Announcement

Collapse
No announcement yet.

Arconia - Open World, SCI-FI Rogue-Like

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • [GAME] Arconia - Open World, SCI-FI Rogue-Like

    Arconia
    In a nutshell: Geometry Wars meets Star Control 2.


    Intro Video


    Latest Progress
    I'm organizing this post so the latest 2 videos will always be at the top of this post.



    Visuals


    Player Ship Model


    Enemy Ship


    Player Character
    Last edited by hyperdr1ve; 09-04-2015, 12:49 PM. Reason: Add new sketchfab
    Dev Blog http://www.error454.com
    Arconia: Twinstick Shooter Adventure

  • #2
    Day 22.
    Added energy mechanic, world boundaries and updated the scanning mechanic. Also made some more HUD refinements.
    Dev Blog http://www.error454.com
    Arconia: Twinstick Shooter Adventure

    Comment


    • #3
      very Nice. too many games now days don't seem to focus on if the game work at all, just that it looks pretty.

      Comment


      • #4
        Originally posted by WeekendWarrior View Post
        very Nice. too many games now days don't seem to focus on if the game work at all, just that it looks pretty.
        I agree! I've been on the other end too though, it's easy and distracting and fun to get caught up in how things look, especially in UE4 where everything looks amazing! Once my game is fully playable I'll allow myself to indulge that end of things. For now I'd rather have a 10-minute experience for people to play than a handful of nice screenshots.
        Dev Blog http://www.error454.com
        Arconia: Twinstick Shooter Adventure

        Comment


        • #5
          Day 23

          Minor fixes and code restructuring. Added cheat codes to speed up iteration times. Added passive items and created the first passive item type (Power System I). Refactored stats screen making it easier to programatically generate stat UI for each item type. Tuned weapons to make missiles a bit more fun. Also added some more variety to asteroid spawns.
          Dev Blog http://www.error454.com
          Arconia: Twinstick Shooter Adventure

          Comment


          • #6
            Day 24


            Today I mostly worked on enemy AI. I added a reaction and alertness system. Enemies are now spawned with a randomized chassis size, randomized loadout and with a random accuracy value. The accuracy ranges from [0-1] where 0 shoots where you are and 1 shoots at where you are going to be.

            Looking through ways of predicting accuracy, I implemented this solution. My implementation looked like this, I use prediction in the case of firing a projectile weapon and just straight up location when firing a beam weapon. ShotAccuracy below ranges from [0-1]:
            Code:
            const FVector targetVelocity = target->PhysicsComponent->GetPhysicsLinearVelocity();
            const FVector targetLocation = target->GetActorLocation();
            const FVector gunLocation = ShipPawn->GetActorLocation();
            const float projectileSpeed = 4500.f;
            
            FVector finalProjectileAim = FVector::ZeroVector;
            FVector finalLaserAim = FVector::ZeroVector;
                
            if (ShipPawn->bAIHasProjectileWeapon)
            {
                const float a = FMath::Square(targetVelocity.X) + FMath::Square(targetVelocity.Y) - FMath::Square(projectileSpeed);
                const float b = 2.f * (targetVelocity.X * (targetLocation.X - gunLocation.X) + targetVelocity.Y * (targetLocation.Y - gunLocation.Y));
                const float c = FMath::Square(targetLocation.X - gunLocation.X) + FMath::Square(targetLocation.Y - gunLocation.Y);
                const float discriminant = FMath::Square(b) - 4.f * a * c;
                float finalT = 0;
            
                if (discriminant < 0)
                {
                    // We can't hit the target in time :(, just fire for show
                    finalProjectileAim = (targetLocation - gunLocation).GetSafeNormal();
                }
                else
                {
                    const float t1 = (-b + FMath::Sqrt(discriminant)) / (2.f * a);
                    const float t2 = (-b - FMath::Sqrt(discriminant)) / (2.f * a);
            
                    // Choose the smallest positive t value
                    if (t1 > 0 && t2 > 0)
                    {
                        finalT = FMath::Min(t1, t2);
                    }
                    else
                    {
                        finalT = FMath::Max(t1, t2);
                    }
            
                    const FVector finalTarget = ShotAccuracy * finalT * targetVelocity + targetLocation;
                    finalProjectileAim = (finalTarget - gunLocation).GetSafeNormal();
                }
            }
                
            if (ShipPawn->bAIHasLaserWeapon)
            {
                finalLaserAim = (targetLocation - gunLocation).GetSafeNormal();
            }
            Dev Blog http://www.error454.com
            Arconia: Twinstick Shooter Adventure

            Comment


            • #7
              Day 25


              I finally added the ability to jettison modules from your ship. I try to make this un-annoying by setting a bJettisoned state and then once the ship gets an EndOverlap for the module, I set a timer that switches the flag to allow for re-picking up the module.

              I changed the way that asteroids drop loot while being attacked. They now incrementally drop loot as they get hit
              Code:
              int32 NumOfLootToDrop = (1-(health/maxhealth)) * NumLootRemaining;
              .

              I swapped out the generic drops with the actual elemental types defined in our game design document.

              I also refined delivery quests so that they can be 1:X meaning 1 pickup with multiple dropoffs. This required some reworking of the mini map to display multiple quest destination markers as well as multiple active quest selector markers. It wouldn't be too hard to extend this to allow for X:1 missions, I may do that in the future. I'm also thinking that I want to add the ability to tie in a quest item with these. So maybe you pick up X items that you have to drop off to each location or vice-versa.
              Last edited by hyperdr1ve; 06-04-2015, 11:42 PM. Reason: format
              Dev Blog http://www.error454.com
              Arconia: Twinstick Shooter Adventure

              Comment


              • #8


                I continued my work on the mission interface in UMG. I now print out the currently selected mission, time remaining for the mission and the status of the mission goals. This alone has really started to make things feel like a game! My task list for the mission system has 2 remaining items that I'll clean up on monday before getting to the really exciting stuff!
                Dev Blog http://www.error454.com
                Arconia: Twinstick Shooter Adventure

                Comment


                • #9
                  I love that "this is actually starting to feel like a game" feeling. The game looks pretty cool, keep us updated!

                  ARCADE FLIGHT COMBAT GAME
                  Now on Steam!

                  Comment


                  • #10
                    I like that the game is focused heavily on its core mechanics, seems it will be very fun to play
                    Programmer working on Creach: The Depleted World game!

                    Comment


                    • #11
                      Originally posted by brunogruber View Post
                      I love that "this is actually starting to feel like a game" feeling. The game looks pretty cool, keep us updated!
                      Thanks! Yes, I love the feeling of crossing certain landmark thresholds in the development process. There will be many more

                      Originally posted by Dgek View Post
                      I like that the game is focused heavily on its core mechanics, seems it will be very fun to play
                      Thanks for checking it out, I think it will be fun too
                      Dev Blog http://www.error454.com
                      Arconia: Twinstick Shooter Adventure

                      Comment


                      • #12


                        I'm really excited to share the first set of models for this project!
                        Player Ship Enemy Ship
                        I spent the last 2 days basically refactoring my gamepad navigable hud system. One thing about being proficient in C++ in UE4 is knowing your base classes well. This was a case where I didn't know the HUD classes that well. I made the mistake of implementing my gamepad navigable hud using AHUD as the base class rather than UUserWidget. The end result was that I wanted to be able to spawn any number of these huds (Inventory, Mission Selection, Main Menu) and I couldn't.

                        Now that this is all fixed, I can literally move on with my life. HUD is always a bit of a pain in game engines. The basic solution for my gamepad hud is a solution I've used in the past for previous engines. You store a map of game widgets that map to navigation structures.
                        Code:
                        TMap<UWidget*, UBaseNavigableMenuStructure*> NavigationMap;
                        Where UBaseNavigableMenuStructure is a class with the 4 members:
                        Code:
                        // Item above you
                        UPROPERTY()
                        UWidget* Up;
                        
                        // Item below you
                        UPROPERTY()
                        UWidget* Down;
                        
                        // Item to the left of you
                        UPROPERTY()
                        UWidget* Left;
                        
                        // Item to the right of you
                        UPROPERTY()
                        UWidget* Right;
                        Then when constructing the HUD, stuff all of your selectable widgets into the map, setting the widget that is right/left/above/below each widget. Then you track the selected item, change brush materials to indicate selected/unselected items and *poof* you're done It is a very low tech solution that has worked well in the past. If you need to store other pointers in the map for a specific menu you just override UBaseNavigableMenuStructure and make a type for the specific menu.
                        Dev Blog http://www.error454.com
                        Arconia: Twinstick Shooter Adventure

                        Comment


                        • #13
                          There could be a problem with a game called... Aracania. Maybe double check it :3

                          Comment


                          • #14
                            Originally posted by Kanizitas View Post
                            There could be a problem with a game called... Aracania. Maybe double check it :3
                            We'll be careful to distinguish ourselves going forward
                            Dev Blog http://www.error454.com
                            Arconia: Twinstick Shooter Adventure

                            Comment


                            • #15


                              Today I worked on an exciting feature that allows the player to dock with a station or other object. When docked, the player hops out of the ship and runs around to perform various sundry tasks like buying, selling, upgrading the ship and exploring.

                              Here's what our little Arconian pilot will look like when he's out of the ship:


                              At the core, this is nothing more than unpossessing one pawn and possessing the other. The player controller manages all of this and is where the actual functions to dock/undock exist. Here is a look at one of my station blueprints. You can see that each station has 3 unique things:
                              1. The parking spot for the player ship
                              2. The starting location of the player pawn
                              3. A camera


                              When the player requests to dock, I do the following:
                              1. Store the ship and camera location for undocking
                              2. Unpossess the ship pawn
                              3. Move the ship pawn to his parking spot
                              4. Spawn/possess the player pawn
                              5. Blend camera to the station blueprint's camera

                              Undocking is basically the reverse
                              1. UnPossess the player pawn and destroy
                              2. Move the ship to the entry location stored in #1 of docking
                              3. Possess ship
                              4. Blend camera to ship pawn

                              One issue I ran into while blending cameras using SetViewTargetWithBlend is that it couldn't handle blending to a Camera Component My work around was to spawn a helper camera actor in my player controller in BeginPlay():
                              Code:
                              TransitionCamera = GetWorld()->SpawnActor<ACameraActor>(ACameraActor::StaticClass());
                              Then, again in my player controller, I made an override for SetViewTargetWithBlend that detects if we're blending to a space station actor and if so sets up the transition camera based on the camera contained in the blueprint.
                              Code:
                              void AShipPlayerController::SetViewTargetWithBlend(class AActor* NewViewTarget, float BlendTime, enum EViewTargetBlendFunction BlendFunc, float BlendExp, bool bLockOutgoing)
                              {
                                  ASpaceStationActor* Space = Cast<ASpaceStationActor>(NewViewTarget);
                                  if (Space)
                                  {
                                      // It's a space station! Setup parameters on the transition camera to match the space station camera and then transition to it
                                      TransitionCamera->GetCameraComponent()->FieldOfView = Space->Camera->FieldOfView;
                                      TransitionCamera->SetActorLocation(Space->Camera->GetComponentLocation());
                                      TransitionCamera->SetActorRotation(Space->Camera->GetComponentRotation());
                              
                              
                                      Super::SetViewTargetWithBlend(TransitionCamera, BlendTime, BlendFunc, BlendExp, bLockOutgoing);
                                  }
                                  else
                                  {
                                      Super::SetViewTargetWithBlend(NewViewTarget, BlendTime, BlendFunc, BlendExp, bLockOutgoing);
                                  }
                              }
                              Attached Files
                              Dev Blog http://www.error454.com
                              Arconia: Twinstick Shooter Adventure

                              Comment

                              Working...
                              X