How to setup GSA project with multiple URL’s using specific articles

I want to set up a project with 100 URLs. I would like to add a batch of articles for each URL so only these articles are used. Is this combination possible in the same project?
URL 1 -> Articles batch 1
URL 2 -> Articles batch 2
URL 3 -> Articles batch 3

Another approach:
For example, I can create 3 projects for 3 URLs from the same domain and this uses articles separately.
Given I will be buying/using verified lists to build article links for all projects/URLs, how do I make sure that GSA will not build links on the same domains for different projects?
This is going to be time-consuming and may not be feasible with 100’s of URLs.

How to make my Unity project deterministic for replays?

I am working on an arcade-style 2D shmup and recently started implementing a replay system that allows players to view their runs of the game.

I use the technique of recording input each FixedUpdate() and rerunning the game as a simulation, reading the saved input each frame and processing it in the core game loop as if it was real-time input from the player.

This requires an extremely deterministic game, and in order to get perfectly synced movement and scoring in the replay, I have had to shift to a paradigm of using exclusively FixedUpdate() and Time.fixedDeltaTime.

I don’t mind this, as I now have 100% reliable replays with no desyncing.

My question concerns whether some of the techniques I used to port my game to the deterministic FixedUpdate paradigm are problematic, or if there are better ways to achieve the same effect.

For example, previously I relied heavily on coroutines yielding using WaitForSeconds(). This method is underpinned by normal Update() loop and so introduced indeterminism into the game leading to desyncs.

To fix it, I still use coroutines, but any time I need to wait, I do it by waiting for n number of calls of FixedUpdate(). For example,

for (int i = 0; i < 60; i ++) {     yield return new WaitForFixedUpdate(); } 

This seems to be working just fine to keep the game deterministic, but I wonder if there’s a more straightforward way, or if there are potential issues this type of technique might cause?

In general, are there any other techniques or pitfalls I need to be aware of to keep my game deterministic enough for perfectly synced replays?

Posting only to verified imported Project Accounts

Hi Sven,
Please, I have some verified accounts that have been steady for several months.
My problem is about using the import account feature of SER.
I might need some clearance here first.
1. Does SER import all the created accounts in a project or does it only import the ones with VERIFIED links?
2. If it imports all accounts, how does one ensure that it only imports accounts with verified links.
Since, I already have these accounts created, how do I FORCE SER to re-login into these accounts imported from the verified links of other projects.
I don’t want to use no new list or make SER to search for links to post to. I only want it to post these verified account links.
I would really appreciate your guidance in this respect.

Ethereum Token Cryptocurrency Project

I started this project in March of this year while I was learning about blockchain programming. Good Luck Token is an Ethereum-based (ERC20) token that has a simple idea behind it – to bring investors good luck and prosperity. My goal was to create a token and website that wouldn't require an entire team of people to manage, then promote it and have people be able to purchase tokens directly through the website. I have other…

Ethereum Token Cryptocurrency Project

How to build upon Jongallant’s verlet integration rope project?

In order to build 2d rope physics in my game, I download the github project from Jongallant in this link. In my game, I want the rope to collide with objects with differents types of colliders such as box collider or polygon collider.

I made modification to the code of the project file. In Rope script, I have the following lines :

using System.Collections.Generic; using UnityEngine;  public class Rope : MonoBehaviour {     LineRenderer LineRenderer;     Vector3[] LinePositions;      private List<RopeNode> RopeNodes = new List<RopeNode>();     private float NodeDistance = 0.2f;     private int TotalNodes = 50;     private float RopeWidth = 0.1f;      Camera Camera;      int LayerMask = 1;     ContactFilter2D ContactFilter;         RaycastHit2D[] RaycastHitBuffer = new RaycastHit2D[10];     RaycastHit2D[] RaycastHitBuffer1 = new RaycastHit2D[10];     Collider2D[] ColliderHitBuffer = new Collider2D[10];      Vector3 Gravity = new Vector2(0f, -5f);     Vector2 Node1Lock;      void Start()     {         Camera = Camera.main;          ContactFilter = new ContactFilter2D         {             layerMask = LayerMask,             useTriggers = false,         };          LineRenderer = this.GetComponent<LineRenderer>();          // Generate some rope nodes based on properties         Vector3 startPosition =;         for (int i = 0; i < TotalNodes; i++)         {                         RopeNode node = (GameObject.Instantiate(Resources.Load("RopeNode") as GameObject)).GetComponent<RopeNode>();             node.transform.position = startPosition;             node.PreviousPosition = startPosition;             RopeNodes.Add(node);              startPosition.y -= NodeDistance;         }          // for line renderer data         LinePositions = new Vector3[TotalNodes];     }       void Update()     {         // Attach rope end to mouse click position         if (Input.GetMouseButtonDown(0))         {             Node1Lock = Camera.ScreenToWorldPoint(Input.mousePosition);         }          DrawRope();     }      private void FixedUpdate()     {         Simulate();                                 // Higher iteration results in stiffer ropes and stable simulation         for (int i = 0; i < 80; i++)         {             ApplyConstraint();              // Playing around with adjusting collisions at intervals - still stable when iterations are skipped             if (i % 2 == 1)                 AdjustCollisions();         }     }      private void Simulate()     {         // step each node in rope         for (int i = 0; i < TotalNodes; i++)         {                         // derive the velocity from previous frame             Vector3 velocity = RopeNodes[i].transform.position - RopeNodes[i].PreviousPosition;             RopeNodes[i].PreviousPosition = RopeNodes[i].transform.position;              // calculate new position             Vector3 newPos = RopeNodes[i].transform.position + velocity;             newPos += Gravity * Time.fixedDeltaTime;             Vector3 direction = RopeNodes[i].transform.position - newPos;                                      // cast ray towards this position to check for a collision             int result = -1;             result = Physics2D.CircleCast(RopeNodes[i].transform.position, RopeNodes[i].transform.localScale.x / 2f, -direction.normalized, ContactFilter, RaycastHitBuffer, direction.magnitude);              if (result > 0)             {                 for (int n = 0; n < result; n++)                 {                                         if (RaycastHitBuffer[n].collider.gameObject.layer == 9 || RaycastHitBuffer[n].collider.gameObject.layer == 10)                     {                         Vector2 hitPos = RaycastHitBuffer[n].point;                         newPos = hitPos;                         break;                                                      }                 }             }              RopeNodes[i].transform.position = newPos;         }     }          private void AdjustCollisions()     {         // Loop rope nodes and check if currently colliding         for (int i = 0; i < TotalNodes - 1; i++)         {             RopeNode node = RopeNodes[i];              int result = -1;             result = Physics2D.OverlapCircleNonAlloc(node.transform.position, node.transform.localScale.x / 2f, ColliderHitBuffer);              if (result > 0)             {                 for (int n = 0; n < result; n++)                 {                     if (ColliderHitBuffer[n].gameObject.layer != 8)                     {                         if(ColliderHitBuffer[n].gameObject.layer == 9) {                             // Adjust the rope node position to be outside collision                             Vector3 collidercenter = ColliderHitBuffer[n].transform.position;                             Vector3 collisionDirection = node.transform.position - collidercenter;                              Vector3 hitPos = collidercenter + collisionDirection.normalized * ((ColliderHitBuffer[n].transform.localScale.x / 2f) + (node.transform.localScale.x / 2f));                             node.transform.position = hitPos;                             break;                          } else if (ColliderHitBuffer[n].gameObject.layer == 10) {                              Vector3 velocity = RopeNodes[i].transform.position - RopeNodes[i].PreviousPosition;                                                          Vector3 newPos = RopeNodes[i].transform.position + velocity;                             newPos += Gravity * Time.fixedDeltaTime;                             Vector3 direction = RopeNodes[i].transform.position - newPos;                                                                      int result1 = -1;                             result1 = Physics2D.CircleCast(RopeNodes[i].transform.position, RopeNodes[i].transform.localScale.x / 2f, -direction.normalized, ContactFilter, RaycastHitBuffer1, direction.magnitude);                              if (result1 > 0)                             {                                 for (int m = 0; m < result1; m++)                                 {                                                         if (RaycastHitBuffer1[m].collider.gameObject.layer == 10)                                     {                                         Vector3 collidercenter = ColliderHitBuffer[n].transform.position;                                         Vector3 collisionDirection = node.transform.position - collidercenter;                                          Vector3 raycastHit2DPoint = new Vector3(RaycastHitBuffer1[n].point.x, RaycastHitBuffer1[n].point.y, 0);                                          Vector3 hitPos1 = raycastHit2DPoint + collisionDirection.normalized * (node.transform.localScale.x / 2f);                                         node.transform.position = hitPos1;                                         break;                                               }                                 }                             }                         }                      }                 }             }         }         }      private void ApplyConstraint()     {         // Check if the first node is clamped to the scene or is follwing the mouse         if (Node1Lock !=         {             RopeNodes[0].transform.position = Node1Lock;         }         else         {             RopeNodes[0].transform.position = Camera.main.ScreenToWorldPoint(Input.mousePosition);         }          for (int i = 0; i < TotalNodes - 1; i++)         {             RopeNode node1 = RopeNodes[i];             RopeNode node2 = RopeNodes[i + 1];              // Get the current distance between rope nodes             float currentDistance = (node1.transform.position - node2.transform.position).magnitude;             float difference = Mathf.Abs(currentDistance - NodeDistance);             Vector2 direction =;                         // determine what direction we need to adjust our nodes             if (currentDistance > NodeDistance)             {                 direction = (node1.transform.position - node2.transform.position).normalized;             }             else if (currentDistance < NodeDistance)             {                 direction = (node2.transform.position - node1.transform.position).normalized;             }              // calculate the movement vector             Vector3 movement = direction * difference;              // apply correction             node1.transform.position -= (movement * 0.5f);             node2.transform.position += (movement * 0.5f);         }     }      private void DrawRope()     {         LineRenderer.startWidth = RopeWidth;         LineRenderer.endWidth = RopeWidth;          for (int n = 0; n < TotalNodes; n++)         {             LinePositions[n] = new Vector3(RopeNodes[n].transform.position.x, RopeNodes[n].transform.position.y, 0);         }          LineRenderer.positionCount = LinePositions.Length;         LineRenderer.SetPositions(LinePositions);     }  } 

[ The layer 9 contains the circle collider objects and the layer 10 contains the box collider objects]

But, it is not working as intended ! Here is what I happens : Youtube Video

Can somebody help me please ?

Newbie question – what will happen after project Stop?

Planning to run GSA SER, and did not find answer to my question.
Lets say i import target URLs from bought list file.
Run a campaign for some time. Then i stop, and start it again after some time.
Does link building starts from beginning of that list file over again, or is any way to start from that point where i stopped, even when the program was closed ?

Why does a project sometimes not generate links?

Hi there! I just saw detail in some projects, I can’t find the reason why this problem happens.
An example:
I had created 3 projects (A, B, and C) same configuration, same everything! after 3 days on:
– Project A, has created 340 verified links and continues to create posts.
– Project B, 282 verified links, and then it is stopped, they do not generate sent links.
– Project C, 61 verified links and now it is stopped, it does not generate sent links.

What could be the problem?