Dismiss this notice
The forum is an alternative place to discuss things all Blushies. Our Discord can be found here: https://discord.gg/Z7fYft4 , blog here: https://blog.blushyface.com/ and Twitch channel here: https://www.twitch.tv/blushyface


Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Progress report
Where I post updates about the project.
#1
Wink 
Summary
Super Blushy Wars (due lack of a better name) is a fan project written in .NET Core (C#) with the aim to create a framework with features that can be found in various Super Robot Wars games consolidated into one package. The end goal is to create a playable game with the setting and story about Blushies but the framework should also be usable to create actual SRW games with.

Game play & UI from OG 1/2 OG 2nd / J / W will be taking as the starting point to base the framework on with additional features found in later games to be implemented where deemed a better choice. That said, there is no real roadmap or a specific deadline when this will be done (this is mainly a solo project I work on when I have time) so it is hard to say when I have a presentable build ready for people to test especially when nothing is final so code tend to be refactored at times but soonTM?


Sounds familiar?
You might remember I have written a previous unfinished version in the .NET framework using SignalR + Phaser 3 -> https://blog.blushyface.com/2020/02/01/c...s-on-hold/ but decided to rewrite it again from scratch in .NET Core , why? Good question, keeps me busy i guess.

A couple screenshots can be found below but the rest of the project can be found at the link above.

[Image: PYPOA4E.gif]

[Image: QkonKMb.gif]
[Image: Pv9hIXi.gif]

But let's focus on the rewrite.


Features
Below are features that are done (not 100% up to date). Note that there is no UI code written at all but once I have implemented the minimum features I want to implement I will then work on the the UI design and implement it in either Unity / GoDot or Phaser 3 depending if i want to write it as a web based game or provide it as an application.


Scenario
- scenario name + description
- start and end scenario dialog
- scenario path selection


Map
- maps are added to a scenario
- map name + description
- maps are created as a 2d grid with map tiles
- map tile contains properties such as type of terrain and terrain bonus
- add units (player / allies / enemies / neutral)
- add map events


Map events
- map events are added to the map
- add an event at turn x
- add dialogs
- add / remove units (player / allies / enemies / neutral)


Pilots
- name + description
- various stats (Level / kill count / SP / Melee / Range / Hit etc)
- spirit commands


Units
- name + description
- various stats (HP / EN / Armor etc)
- add / remove attacks (weapons)
- add combination attacks (requires 2 or more units)
- add pilot(s) to unit


Partially done / working on
- configuration settings
- support for achievements / unlockables
- save functions for saving scenarios / pilots / units / skills etc. Default data path is \Data, -> \Data\Scenarios , \Data\Units etc.
- load functions


To be done / not started
- Game play / formulas to calculate various modifiers / stats etc
- Graphics (all such as map UI / battle scene UI, menus etc)
etc..?


Unexplored ideas
- multiplayer / coop / 1v1 mode
- support for twitch plays making use of my Twitch lib -> https://blushyface.com/2020/03/06/commun...-net-core/


Test the framework
The current way to test the features is to write tests using the methods implemented.

Example how to create 3 pilots, add skills / abilities , create units and add pilots to a unit.
Code:
var pilot1 = new Pilot("pilot name", "");
pilot1.SetSkill(Skills.ChainAttack, 8);
pilot1.SetSkill(Skills.Counter, 2);
pilot1.SetAbility(Abilities.Melee, 120);
pilot1.SetAbility(Abilities.Range, 89);

var pilot2 = new Pilot("pilot name #2", "description", "portrait", 100, 100, 50, 50, 50, 50);
var pilot3 = new Pilot("pilot name #3", "description", "portrait", 100, 100, 50, 50, 50, 50);

var unit1 = new Unit("unit name", "")
{
HitPoints = 12000,
Energy = 250,
Armor = 4500,
Movement = 10
};

unit1.Attacks.Add(new Attack() { Name = "attack name", BaseDamage = new Range(2500, 3000), Ammo = 1, WillPowerRequired = 50, Effects = new List<Effects>(){ Effects.PostMovement}});
unit1.Attacks.Add(new Attack() { Name = "attack name #2" });
unit1.Attacks.Add(new Attack() { Name = "attack name #3" });

unit1.ComboAttacks.Add(new CombinationAttack()); // empty combo attack

var unit2 = new Unit("unit #2", "", Size.Large, TerrainGrade.A, TerrainGrade.A, TerrainGrade.A, TerrainGrade.A);

unit1.Pilots.Add(pilot1);
unit1.Pilots.Add(pilot2);
unit2.Pilots.Add(pilot3);

Example how to create a scenario with dialogs before and after map is finished
Code:
ScenariosList.Add(new Scenario()
{
Name = "Scenario 1",
Description = "This is a demo scenario featuring 2 pilots and a demo map",
Map = new MapsData().LoadMap("map 1"),
Events = new List<ScenarioEvent>()
{
new ScenarioEvent()
{
DialogsMapStart = new List<Dialog>()
{
new Dialog("", "")
},
DialogMapEnd = new List<Dialog>()
{
new Dialog("", ""),
}
}
}

});

// note scenariopath is usually 1 item but more means player is able to pick route / path
ScenarioPaths.Add(1, ScenariosList);


Example how to create a map with various dialogs and map events
Code:
var map = new Map("map 1",
"This is a 4x4 test map",
99,
new[,]
{
{0, 0, 0, 0},
{0, 0, 0, 0},
{1, 1, 1, 1},
{1, 1, 1, 1},
}
);

var mapEvent = new MapEvent() // initial unit placement start (required)
{
Turn = 0,
Player = new List<Unit>()
{
new Units().SetUnit("", new Position(0, 1))
},
Allies = new List<Unit>()
{
new Units().SetUnit("", new Position(0, 2))
},
Enemies = new List<Unit>()
{
new Units().SetUnit("", new Position(2, 1)),
new Units().SetUnit("", new Position(2, 2)),
}
};
map.Events.Add(mapEvent);

mapEvent = new MapEvent()
{
Turn = 3,
Enemies = new List<Unit>()
{
new Units().SetUnit("", new Position(3, 2))
},
Dialogs = new List<Dialog>()
{
new Dialog("", ""),
new Dialog("", "")
}
};
map.Events.Add(mapEvent);

mapEvent = new MapEvent()
{
Turn = 5,
Dialogs = new List<Dialog>()
{
new Dialog("", "")
},
};
map.Events.Add(mapEvent);

mapEvent = new MapEvent()
{
Turn = 8,
Dialogs = new List<Dialog>()
{
new Dialog("", "")
}
};
map.Events.Add(mapEvent);


mapEvent = new MapEvent()
{ Turn = 10,
Enemies = new List<Unit>()
{
new Units().SetUnit("", new Position(0, 0)),
new Unit()
{
Name = "", // spawn custom unit on this map
HitPoints = 250000, Armor = 5500,
Movement = 15,
Attacks = new List<Attack>(),
ComboAttacks = new List<CombinationAttack>(), // etc
}
}
};
map.Events.Add(mapEvent);



Resources / references
Resources / references provided by other users

https://docs.google.com/document/d/1oPEr...2lEv0/edit (by Gruce).

[Image: Jl18KSc.png]

(Morale + Melee or Ranged) / 200 * Weapon Power = ATK
(Morale + Defense) / 200 * Armor = DEF
ATK - DEF = Damage

Mech Mobility + Pilot Evasion / 2 = Base Evasion
Mech Accuracy + Pilot Accuracy / 2 = Base Accuracy
Z3, V, X, and T remove the "/ 2" from the formula.

Unit terrain values modify Base Accuracy, Base Evasion, and Armor directly.

S = 1.1x
A = 1x
B = 0.9x
C = 0.8x
D = Can't enter the terrain

Those multipliers are also used for weapon terrain; in that case, they directly modify the weapon's power.

Unit terrain checks the terrain the unit is sitting in, while weapon terrain checks the target's terrain.

[Image: RD6hEcY.png]


Want to help?
This is where I ask for anyone that wants to contribute to the project I guess? I'm looking for technical / in depth game play documents such as battle damage calculations, what skill affects what etc but if you have other ideas you think it will help I'm all open for it.


Comments?
if you have suggestions, requests for a feature etc let me know.
Like  0
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)