[R>Programmer] Paid Looking for C#/unity script improvement commission

Hikkeiru

Member
Game Developer
Sep 20, 2022
424
495
Project:
GOSA

Developer:
Me

Looking for:
Someone who will improve on a script so I can focus on other tasks.


Employment Type:
Commission payment for the specified task

Work commitment:
Once you're done, we break up.

Preferred method of contact:
DM me here for details first. I will also give you a code sample.


Job Description:
Recently I've added a new progression tracker that marks completed events, and possible events and then lays them out in a tree/grid-like view.
I actually don't need to do this because the available quests are only at the bottom so it's clear to do, but it's a nice have.





You don't have permission to view the spoiler content. Log in or register now.

I like it although I'd like to improve it so it's more readable. Since I'm doing everything alone, I don't want this task to be on the to-do list forever.


This is a UI Canvas scroll view with manually calculated content size.
Then the nodes' positions are manually calculated and placed on the canvas.
Then the lines (using the line renderer component) are created and placed with the calculated breaking points.



The task involves solving the current problems with this UI while keeping in mind the provided additional requirements below.

Problems:

You don't have permission to view the spoiler content. Log in or register now.

You don't have permission to view the spoiler content. Log in or register now.
You don't have permission to view the spoiler content. Log in or register now.

Requirements:
You don't have permission to view the spoiler content. Log in or register now.


You don't have permission to view the spoiler content. Log in or register now.



You don't have permission to view the spoiler content. Log in or register now.
 
Last edited:

Mike145

Newbie
Jul 14, 2018
49
164
I'm not interested in implementing it and the information you provided are not enough for me to understand how the scene progression exactly works but my first idea would be:

1. Make the whole space a grid.
2. Make the nodes as obstacles.
3. Make it appear only when user hovers over a certain node. (cause I assume there are different paths)
4. A) Implement A* algorithm to generate a path dynamically on hover
4. B) Make the paths as directed graphs ( )
5. Store seen scenes somewhere so if an user hovers over a node in the middle of a given path it colors the path between seen scenes nodes in green and not seen scenes path in white.
 
Last edited:

Hikkeiru

Member
Game Developer
Sep 20, 2022
424
495
Mike145
There is nothing related to scene progression. This is UI Canvas with UI elements. The task is not related to tracking completed nodes. Only to calculate positions/ size nodes and lines with the solution to solve the existing problems described above.
A* will have too many breaking points but updated the thread based on this suggestion.
Thanks for the suggestion.
 

Dueweight-Creations

New Member
Jun 26, 2024
4
2
!
So the first thing that comes to mind, is this is technically one of those unsolvable problems (but for the life of me I can't remember what this problem is called, its been years since college), the moment you have nodes connecting more than 1 level across, there is no way to 'weave' the paths such that you can have a straight linear tree (at least not without it being hard to read and trace wires). I have to make both schematics and PCBs like this now and then for my IRL job, mostly for programming PLC's, this map is a form of schematic.

The first solution to this 'impossible' problem is a static tree. That is, if this tree represents a fixed progression system (like a story line), then by using your special understanding of the tree and context, you manually route the tree in a way you think looks good. This is the only way to preserve the vertical layout you have, and even then, it looks like your connections are the worst case scenario, so keeping the placement of the nodes as they are now may not be possible, you still may need to move you nodes and tree shape to get the lines to look half decent. An IRL example is circuit boards, having to move components around to make room for traces and circuit paths.

This first solution only works if you are not changing the tree, and its not automatic, but hand crafted.

If you want it to be automatics so you don't have to deal with it (possibly because you want to keep adding to it automatically


first, you have to accept that you can't have a nice vertical progress tree, or at least its current shape. You can still use a tree shape... if that's the look you are going for. (If i remember I need to make three post before my account can share a youtube link ) In order to trace connections further up the tree, you basically need to 'bus' the connection so that it gets out of the way of the inner connection between layers. Then you have to 'bus' the connections back into the tree where they land on their final destination. But as your image shows, some nodes connect to multiple different levels at once. So the problem then becomes, you don't just have one bus, but countless busses tracing up and down the side of your tree. So while it pushes clutter off to the side of the schematic, its still clutter, and a lot of back and forth to read it. So the other solution is to stagger the system so outputs can be both vertical and horizontal. see images below. progress map A.png

progress map B.png

I understand you are requesting a service. I'm just pointing out that the technical nuances to let you know if you are expecting a magic solution, it may not be possible without allowing the dev that helps you the freedom to move things around as needed to display the progress tree.
Edit:
Only to calculate positions/ size nodes and lines with the solution to solve the existing problems described above.
Good, if that's the case, I assume that means that future devs would be allowed to re-arrange things automatically to get things to work.
 
Last edited:
  • Like
Reactions: gojira667

Mike145

Newbie
Jul 14, 2018
49
164
My bad, I didn't have much time when I wrote this.
I skimmed through your text and assumed some things based on the problems I've solved before.

I'm pretty sure this is the solution you want:

Sorry for kinda recommending you something different than you posted about and suggesting you do it yourself even though you seem to don't have time to do it :KEK:
 

Hikkeiru

Member
Game Developer
Sep 20, 2022
424
495
My bad, I didn't have much time when I wrote this.
I skimmed through your text and assumed some things based on the problems I've solved before.

I'm pretty sure this is the solution you want:

Sorry for kinda recommending you something different than you posted about and suggesting you do it yourself even though you seem to don't have time to do it XD
This isn't what I'm looking for.
1719431779193.png 1719431788172.png
 

Mike145

Newbie
Jul 14, 2018
49
164
Yeah but its the problem the guy described in the original post.
" I need to navigate from one cell in the grid to another if possible, but with a maximum of 2 turns." - two turns mean two breaking points

The green line is what he wants and a guy gave him an example solution.

I can try to solve this if I have time tomorrow or a day after tomorrow after work but I can't promise anything.
In the world of programming I'm not much of a math guy.
 

Hikkeiru

Member
Game Developer
Sep 20, 2022
424
495
Mike145

It doesn't solve at all lying down the items and putting them closer together.
At the same time A* is going to be too heavy, it's madness for a UI that is gonna grow with every update. I'd rather not move towards renpy performance for the game.
A* also implies finding the path / available space for the lines for the pieces. I don't need a* for lines only.
The nodes already have a connection to the previous nodes there is no random direction they need to find. It would be double the work.
Take care.
 
  • Like
Reactions: Mike145

Dueweight-Creations

New Member
Jun 26, 2024
4
2
Hello, I posted a comment, but because my account was new, the comment was only just recently accepted and shown. You should see it as comment #4 :) it may help provide context for anyone considering accepting to take on your request.
 

Hikkeiru

Member
Game Developer
Sep 20, 2022
424
495
Thank you for writing such detailed answer!

so keeping the placement of the nodes as they are now may not be possible, you still may need to move you nodes and tree shape
to move things around as needed to display the progress tree.
Good, if that's the case, I assume that means that future devs would be allowed to re-arrange things automatically to get things to work.

Moving and placing nodes in different locations is fine.
The only thing that cannot be removed is the previous connections (although it's not related to layout) since those are marking the events one after the other which is a list on every node.

So any different location for nodes would be fine.
Currently, I use the previous nodes and then create a hierarchy one direction upwards.
The node's position upwards is determined by the previous position Y +1.
So if there is C previous pointing to A (5 previous nodes on Y) and B (20 nodes on Y).
It will determine the position of the longer path B and then place it at B+1.





make room for traces and circuit paths
Although it may not be soon because of other priorities.
I was thinking I should do something like this you suggested in between the nodes.
The 1719442527972.png 'fat horizontal lines lines' do something similar laying next to each other, although they don't account for the passing nodes which are on level upwards the hierarchy.

I have not read the paper provided in this video. Yet from the paper image and from what he has done in this video. There is no connection that is going several levels upwards the hierarchy. I'm not sure if the paper would help.



but countless busses tracing up and down
I'm not sure if you said this as an expression.
Currently though there is only single 'forward' event direction and it's going upwards.
I wish to preserve that hierarchy because it's much much easier to parse by brain.



The second image. Is quite interesting although it would make the tree's view too big.
Theoretically I have added a filter in the game which allows to see only available nodes so it may not be that insane both in this image and the currently existing solution.

In case I missed something please tell me.


Also I'm a little curious. Did you found this post through my game thread/ because you played the game or just looking through recruitement forum tab?
In either case thank you for the answer ❤
 

Dueweight-Creations

New Member
Jun 26, 2024
4
2
Also I'm a little curious. Did you found this post through my game thread/ because you played the game or just looking through recruitement forum tab?
Despite me new account, I'm actually a long time user of this site, I used to help a lot, but now I don't have time to work in projects like I used to (wage slave/love my career). I haven't been on in like a year, so I made a new account, one where I try not help too much. Found this post in the recruitment section just because I like to look at interesting projects that are usually more put together then the 'dev help' section. Saw your post and couldn't resist commenting on it, cuz i like technical stuff :3

You don't have permission to view the spoiler content. Log in or register now.
 
Last edited:
  • Like
Reactions: gojira667

Hikkeiru

Member
Game Developer
Sep 20, 2022
424
495
just disable cells in the column above the node, until it reaches its maximum layer.
I don't think this will help because the lines would still be pointing to that disabled node. I can disable all unrelated nodes but then it wouldn't make sense for me to make this entire improvement post.
Yet if you mean that as of 'push the nodes to the right for that node becomes a fake "network" line node/ space" Then yes it surely can be a solution.

Second, to make it so that you don't need any tricky path algorithm to figure out the lines, to avoid the issue of the grid causing lines to over lap, just of set each layer, that way the lines automatically don't stack (i.e. see the red and teal lines no longer have to sneak around each other.
1719474760312.png
For this Im already doing an offset to the lines. Although it's only on this axis.
It actually creates a nice moving effect.
ptgif.gif


For every line that enters the layer that needs to be networked, just add gaps so that each item can run horizontally. I recommend since it looks like in my example its possible for a lower layer node to pop up in the middle between nodes right where the offset grid wants to be (ie the top third node being directly over the lines going up 2 layers), so it may be best to treat lower level nodes as first priority (ie assign them horizontal space first).
Yeah, I was thinking of something similar. Although not sure how hard that would be on math.


For your code, you'd have to forgive me but I will only actually parse this code with my brain when/if I will be forced to actually do the task myself. I don't want to push the priority of this higher at this current moment. Especially since it's more of 'nice to have' than a must.
You don't have permission to view the spoiler content. Log in or register now.


For my code, I will send you it, so you can see how I create this tree.
 

Dueweight-Creations

New Member
Jun 26, 2024
4
2
The .gif does help a lot. I know your initial post did look like it was pretty far along.

A bit about my background, and how this may affect how I design, irl engineer and technical documentation enthusiast, since a lot of the documents I make and work with are visual, just like this progression tree, there are some artistic effects that help with visualizing lots of information, mainly, spacing and grouping things together, and knowing how the mind unconsciously organizes information.

Im already doing an offset to the lines. Although it's only on this axis.
It actually creates a nice moving effect.
I agree, seeing it move, now its clear why you had the strange horizontal tapered busses.
However, it's size may make readability a bit hard (compared to my single thin lines in my previous examples). To keep this nice effect, but improve readability, I'll need to allow space or gaps between different types of horizontal busses. I see that ProgressionTrackerUIMono has some specified fixed distances for vertical and horizontal and nodes size. I'll use that as a guide, but to make the room needed, these the DistanceUpwardsBetweenNodes will probably only be a minimum, and each row will grow as needed to fit the horizontal busses.

EX: notice rounding the corners was important for readability in this example, but probably isn't needed with your animated lines.
1719585058552.png

forgive me but I will only actually parse this code with my brain when/if I will be forced to actually do the task myself.
No worries.


I don't think this will help because the lines would still be pointing to that disabled node. I can disable all unrelated nodes but then it wouldn't make sense for me to make this entire improvement post.
Yet if you mean that as of 'push the nodes to the right for that node becomes a fake "network" line node/ space" Then yes it surely can be a solution.
Yes, I was just 'hiding' the node to visually show that the grid spot would be empty, but what I meant was no node would be in the spot, not just simply hidden, push them left or right. When a node needs space above it, it 'reserves' the spots above it so that when automatically placing nodes, if the spot is reserved, it looks at the next available spot recursively.

I'll see what I can do, but as previously mentioned, I may not be that available, so I encourage anyone else interested to jump into this topic as well.
 

9PercentGames

New Member
Feb 22, 2024
5
0
Isn't it easier to just not connect the nodes and just color code them (available /completed/failed) then you draw the lines when the player hovers over one
Most games with complex tech/skill trees do it like that
 

Hikkeiru

Member
Game Developer
Sep 20, 2022
424
495
Isn't it easier to just not connect the nodes and just color code them (available /completed/failed) than you draw the lines when the player hovers over one
Most games with complex tech/skill trees do it like that
I can do that on top of this. Although not needed right now. Besides coloring like this is easy and this thread would not exist if that were the case. (y)
 

dspeed

Active Member
Oct 15, 2016
845
1,329
So the first thing that comes to mind, is this is technically one of those unsolvable problems (but for the life of me I can't remember what this problem is called, its been years since college)
Travelling salesman.

And self balancing binary search tree algorithm with weighted nodes
 
Last edited: