GSOC 2019 - Light And Shadow Remastered

darshan3

New Member
Contributor
This thread is for the GSoC '19 Project: Light and Shadow Remastered.

Summary: The aim of this project would be to complete the basic gameplay mode which would be a fast-paced Capture The Flag set up in the Dark Fantasy world of Light and Shadow where you have to choose between the game’s two major factions and try to capture opposition's flag. The gameplay will also include features like in-game shop and magic wands.
Student: @darshan3
Mentors: @Skaldarnar, @SuperSnark, @Lucas Lima Vieira, @Iaron da Costa Araújo, @Nihal Singh, Cervator
Github: Project #17
Slack: #light-and-shadow
Blog: https://darshan3.github.io/
Proposal: https://docs.google.com/document/d/1oCJkH3_xWyyEUc85LJE6sklgDZvNIcZU2DI0OT5pz98/edit?usp=sharing
 

darshan3

New Member
Contributor
Minutes of the Meet 0 (26/05/19):

Github Board

The GitHub board was finalized. It was decided that cards with multiple subtasks will be broken down into smaller cards with individual subtasks as I work on them. A detailed plan for each week will be discussed in the weekly meetings.

Discussion of work done
The Light and Shadow repository contains two folders because of varying gameplay styles and old code. It was decided to merge both the codes and if needed, delete the files/code not being used. PRs #79 and #80 were reviewed.

Work to be done
It was decided to start working on this card. Weapons will be dropped when a player dies and destroyed after some time. Flag, if held, will be dropped and teleported to base after some time.

Game restarts
When the game gets over, there will a 60 seconds countdown before the start of next game. The host will have an override button to restart it manually.

There was also some doubt clearance on how to make the client-authority system to work.
 

darshan3

New Member
Contributor
GSoC Week 1 (27/05/19 - 02/06/19):

Blog post: https://darshan3.github.io/gsoc-week-1/

What have you achieved in the last week?

Player respawns at its base on dying. Inventory items and flag (except magic staff) are dropped at the dying spot.

What are you currently working on?
Handling Game Restart and Stats System

What problems are you currently facing?

None

List of PRs and opened/closed Issues:
Player falls in play area before selecting teams #81
Respawn and heal player on death #82
Handle inventory on death #83
 

darshan3

New Member
Contributor
Minutes of the Meet 1 (02/06/19):

How to handle Multiplayer:

Read code for JoshariasSurvival and its dependencies. Read this wiki.

Statistics and Restart System:
There was a lot of discussion for this. There are two possible options, implement a component and update it for all clients or implement a single entity which gets replicated for all clients. I have to look into the systems in place currently (the F2 one specifically) and see how replicate works internally. Make a list of possible design choices and share it with everyone before I start working on it.

Work to be done:
Work on this card.
 
Last edited:

darshan3

New Member
Contributor
GSoC Week 2 (03/06/19 - 09/06/19):

Blog post: https://darshan3.github.io/gsoc-week-2/

What have you achieved in the last week?

Added Statistics and Restart System. Setting Player Skins using SkeletalMesh instead of creating a new Entity.

What are you currently working on?
Fixing bugs in restart and statistics for multiplayer.

What problems are you currently facing?
Understanding how the events work in multiplayer. entities.getComponentWith(...) returning wrong entities.

List of PRs and opened/closed Issues:
Added Statistics and Game Restart Systems #88
Changing player skins through skeletal mesh #80

Minutes of the Meet:

entities.getComponentWith(ClientComponent.class) not working:

Try with other components and see what is exactly happening.
Check ThirdPersonRemoteClientSystem and ensureClientSideEntityOnHeldItemMountPoint systems.

We can create an API for custom characters so that HumanoidCharacters and LaS both depend on it to change skin, rather than using the same code twice in both places.

Other stuff for merging existing PRs was discussed.

Work to be done:
https://github.com/orgs/Terasology/projects/17#card-22550695
https://github.com/orgs/Terasology/projects/17#card-22550728
 

darshan3

New Member
Contributor
GSoC Week 3 (10/06/19 - 16/06/19):

Blog post: https://darshan3.github.io/gsoc-week-3/

What have you achieved in the last week?

Corrected incorrect setting of VisualEntities. Health Hud Fixes. Correcting Restart and Statistics implementation.

What are you currently working on?
Handling flags on drops and restarts.

What problems are you currently facing?
None

List of PRs and opened/closed Issues:
Fix for Incorrect VisualCharacter entity #3686
Fix getText() function in UIText #3689
Health hud fix for reconnects and restarts #90
Game Restart Implementation #91
Player Statistics Implementation #92

Minutes of the Meet:

Discussion on why many things broke due to single trailing \n character.
Currently flags are drops only on throwing with q and not in other cases. Look into a general approach.
Make the sun never set.
Discussion for what happens at evaluation.

Work to be done:
https://github.com/orgs/Terasology/projects/17#card-22550728
And look for general approach for dropped items.
 

darshan3

New Member
Contributor
GSoC Week 4 (17/06/19 - 23/06/19):

Blog post: https://darshan3.github.io/gsoc-week-4/

What have you achieved in the last week?

Handling flags on drops and restarts.

What are you currently working on?
Display restart buttons only to clients.

What problems are you currently facing?
Permission manager is not whitelisted.
Not being able to rotate the player after teleporting.

List of PRs and opened/closed Issues:
Teleport flag after delay on drop #93
Clear game over screen on close #95
Teleport Held Flags on Restart #96

Minutes of the Meet:
Try something like impulse event to rotate? Or see if something can be done through CharacterStateEvent.
Put TeamBalance to Backlog.
How to implement Towers? Check GooeyDefence code and see how it's done.

Work to be done:
Restart Permission and read about Towers.
 
Last edited:

darshan3

New Member
Contributor
GSoC Week 5 (24/06/19 - 30/06/19):

Blog post: https://darshan3.github.io/gsoc-week-5/

What have you achieved in the last week?

Restart button now shows only to those with permission. Fixed VisualEntityTest. Merged old PRs.

What are you currently working on?
Global Entity System and Towers.

What problems are you currently facing?
Permission manager is not whitelisted.
Not being able to rotate the player after teleporting.

List of PRs and opened/closed Issues:
VisualCharacterSystemTest Fix and Whitelist PermissionManager #3695
Restart permission #97

Minutes of the Meet:
The game needs a GlobalEntity to save game statistics and stuff.
The tower system needs to be tweaked to handle everything on one block because at the moment it won't. It's also a bit of work to extract the towers into their own module because a lot is tied to other GD stuff.
What sort of towers should I aim for, multi block and big towers? I was more inclined towards using Rooks as towers, just buy them and place them.
We also discussed skeletal mesh only towers and how tough it would be to implement them.
nihal111 suggested: There is a block out of which the tower grows out. Damaging and destroying the block in effect destroys the entire structure.

Work to be done:
Global Entity implementation.
For towers:
Check multiblock and how it works. For growing towers, check Traps.
 

darshan3

New Member
Contributor
GSoC Week 6 (01/07/19 - 07/07/19):

No blog :(

What have you achieved in the last week?

Tested out the global entity implementation. It is not working with saved games.
Testing out Towers in L&S itself.

What are you currently working on?
Towers with a single block.

What problems are you currently facing?
Problems with when to initialize global entity. It is not working in initialize() or postBegin().
Not working when loading from a saved game.

List of PRs and opened/closed Issues:
Testing branch: https://github.com/Terasology/LightAndShadow/tree/GlobalEntity
Halt sun on game start #100

Minutes of the Meet:
Discussion on why things are not working on loading from save game.
'persisted': true is added to lasGlobalEntity.prefab, and it is showing on dumpEntities. but not in getEntitiesWith().
Towers:
It feels like going without direction. I am able to make it work for single block and single tower component with values like damage and rate stored in the tower component itself.
What to do now? I tried looking for multiblock but can't find something that can help.
iaron: I think you should focus on making towers work as simple as possible at first, and then if you think you can and have the time, you make them more complex.

StructureTemplate can be used to place a bigger tower
But to destroy that tower, you will need to destroy all its blocks.
Multiblock not properly documented :(

Work to be done:
Test out why entities are not loading properly from saved game.
Start making a module for Towers.
 

darshan3

New Member
Contributor
GSoC Week 7 (08/07/19 - 14/07/19):

No blog :(

What have you achieved in the last week?

Found some potential blocker level issues in MultiWorld.
Towers with Mesh appearing on activation.

What are you currently working on?
Towers with a single block.

What problems are you currently facing?
Problems with MultiWorld.

List of PRs and opened/closed Issues:
LAS Global Entity Implementation #101

Minutes of the Meet:
Multi-world's world manager is not initialized on loading a saved game.
Entities are loaded in incorrect pools even after adding world manager.

Work to be done:
Complete Towers. Start Market.
 

darshan3

New Member
Contributor
GSoC Week 8 (15/07/19 - 21/07/19):

Blog post: https://darshan3.github.io/gsoc-week-8/

What have you achieved in the last week?

Basic implementation of Towers and Market.

What are you currently working on?
Towers with a single block. Exchange system for the market.

What problems are you currently facing?
None.

List of PRs and opened/closed Issues:
Basic Implementation for Market #1
Basic Implementation for Towers #1

Minutes of the Meet:
Plan the last month:
week 1: complete towers and market
week 2: Start weapons
week 3: complete weapons along with minimap integration and scoreboard
week 4: complete whatever was left in week 3 and add world generation

For the market, I have to add exchange logic and loading the item list.
NUI Editor not working :(
For towers, I have to add dependency to targetor and effector.
I was planning to have one tower with AOE in short range
and a single enemy long range


Work to be done:
Complete whatever's left here.
 

darshan3

New Member
Contributor
GSoC Week 9 (22/07/19 - 28/07/19):

No blog :(

What have you achieved in the last week?

Towers and market completion still in progress.

What are you currently working on?
Towers with a single block. Exchange system for the market.

What problems are you currently facing?
It is tough making a common implementation for GD as well as LaS.

List of PRs and opened/closed Issues:
None

Minutes of the Meet:
Markets' buy works with single entity exchange, but need to modify it for multiple prefabs and blocks.
I wasn't able to implement a compatible solution for GD as well as LaS/
I also read the basics of world creation (the tutorial). I don't understand how to place some things in a fixed position. For eg. How will I make a river going from x to y.
I also got familiar with Minimap code. It just requires the addition of multiplayer support. How should I proceed? That is, how often should I update player positions in the map? I will have to scan for all players and get their location components and place their arrows on the map if they are within the limits.
For Minimap, create a list of active players instead of doing getEntitiesWith in update section.

Work to be done:
Minimap integration. Add alteration effects to Towers.
 

darshan3

New Member
Contributor
GSoC Week 10 (29/07/19 - 4/08/19):

Blog post: https://darshan3.github.io/gsoc-week-9-10/

What have you achieved in the last week?

Added multiplayer support to the minimap, alteration effects to Towers.

What are you currently working on?
Markets

What problems are you currently facing?
None.

List of PRs and opened/closed Issues:
Implement multiplayer support for minimap #10
Basic Implementation for Towers #1

Minutes of the Meet:
Discussion markets and weapons:

Niruandaleth: What is meant instead is to provide audio-visual feedback when using the weapon, e.g. if you shoot, you want to know (1) that you shot, (2) where the bullet/arrow hits, and (3) the path it travelled before it hit in order to adjust where you point etc. in case you missed. (1) includes how the weapon moves when you use it, does a bow move like a pick-axe? how fast does it move? a gun-style weapon e.g. might want to show some kind of recoil... how does it sound if the weapon is used? (2) you might want to think about some particle effects at the point where the ammunition collides with something (eventually the ground at some point) (3) might also be something that can be solved with particle effects...

Cervator: It may be worth considering an incremental approach: step 1: disembodied UI @darshan3 has been working on, within GSOC scope; step 2: teleport items + game loop to go back to a shared base on the platform to interact with NPCs who may sell things and such (could be a class swap at that point too); step 3: faction-specific bases you start in and can teleport to for NPC interactions

Work to be done:
Add weapons! Complete markets :(
 

darshan3

New Member
Contributor
GSoC Week 11 (05/08/19 - 11/08/19):

No blog :(

What have you achieved in the last week?

Checked combat system code.
I worked on weapons, one minor fix for the minimap and some minute changes on old pr. This coming week will be integration week, where I have to include Towers, weapons and minimap to L&S.


What are you currently working on?
Integrate everything!

What problems are you currently facing?
Not being able to correct Market UI.

List of PRs and opened/closed Issues:
WIP

Minutes of the Meet:
Discussion on world generation.

Work to be done:
Integrate everything
 

darshan3

New Member
Contributor
GSoC Week 12 (11/08/19 - 18/08/19):

Blog post: https://darshan3.github.io/gsoc-week-11-12/

What have you achieved in the last week?

Lots! Check PRs.

List of PRs and opened/closed Issues:
PR
: Add support for custom icons for players #12
PR: Added hearts and spades icons for minimap #31
PR: Integrate minimap with LASTeam based icons #104
PR: Add Alteration effects and Impulse based weapons support #43
PR: Added custom staff textures #32
PR: Add LaS Themed Weapons! #33
PR: Implement LightAndShadow Capture-The-Flag World! #105
PR: Add remove command #1

Minutes of the Meet:
  1. How to reuse this code for the market? The command always returns a String and no indicator values. : Check PR comments.
  2. How to use borders for proper generation of YingYang? Try changing extends correctly.
  3. How can I add small hill areas to play area? base height needs to be modified accordingly, which again I am not being able to do? Should it be something like plateauprovider? : No hills, flat area with obstacles is fine.
  4. How can I restrict existing floraprovider to Play area? or should I simply add them myself? : Current implementation is fine.
Work to be done:
Create backlog and merge current stuff.
 
Top