Advertisement Jump to content
  • Advertisement

Leaderboard


Popular Content

Showing content with the highest reputation on 01/01/19 in all areas

  1. 1 point
    Intro Writing this one at an odd time middle of the week rather than on a Saturday like I had originally planned but better to do something late than never do it at all ...well not always I figure you could find exceptions but this is int one of those. By the time of writing this post I have finally finished the first sprint of the project and plan out the second sprint the second sprint seems to be just a little smaller than the first one but not by much initially I was conflicted on whether or not to dedicate the second sprint only for polishing since that seems to be the majority of what it is right now however given its the second sprint I feel its important to finish the end case of the game which is mostly UI. Main Character So when I started my search for art and animation assets for the character I was really hoping to find one with legs and I did find a few but those tended to be sprites with a weapon held in their arms or too medieval for the game I am making. Eventually I found one with had an urban look with rigged 2D animation that could work I dint really like the look a lot but it was the only one suitable which had legs. That said there was one I fell in love with that dint have legs ...a cool looking furball character I kept debating with myself for a while which went along the lines of 'This character dosent have any legs if I use it can I still call it a runner?' then I eventually figured if we can call an electronic appliance running just because its functioning and not even moving e.g "Is your fridge running?" a furball that's moving can definitely count as running. Player Data This class maintains references for not primitive data relevant to the player my plan is to have different classes for different actions so having a single class maintain references might reduce the overall number of references that need to be maintained. public class PlayerData : MonoBehaviour { public Animator mainAnimator; public Animator cloudAnimator; public LayerMask groundLayerMask; } Player Animator Keys This class just maintains a const for animator conditions. public class PlayerAnimatorKeys { public const string SPEED = "Speed"; } Player Jump So far I have only added the jump functionality for the player. Initially I wanted to use rigidbody2D for the jump and other motion but even when I set ground and player bounce to 0 in the physics material I still noticed an unwanted bounce and the animation was also affecting the rigidbody velocity in an unwanted way so I decided to go ahead and make a custom jump script. public class PlayerJump : MonoBehaviour { [SerializeField] PlayerData playerData; [SerializeField] float jumpForce = 20; //TODO: Needs to come from config [SerializeField] float gravityModifier = 0.5f; //TODO: This needs to come from config bool canJump = true; Vector3 jumpVector; Vector3 fallVector; float ground = 0; float currentForce; private void Start() { ground = transform.position.y; } void InitJump() { jumpVector = transform.position; currentForce = jumpForce; canJump = false; } void DoJump() { currentForce -= gravityModifier; jumpVector.y = (transform.position.y + (currentForce * Time.fixedDeltaTime)); transform.position = jumpVector; } private void OnTriggerEnter2D(Collider2D collision) { if (((1 << collision.gameObject.layer) & playerData.groundLayerMask) != 0) { canJump = true; } } private void Update() { if (Input.GetButtonDown("Jump") && canJump) { InitJump(); } } private void FixedUpdate() { if (!canJump) { DoJump(); } } } Obstacles Currently I have only a single type of obstacle that is nothing but a white square colored and stretched out into a rectangle. For the obstacle I have decided to go with object pooling since here will be a lot of them and destroying and initializing seems excessive. Obstacle This is the class attached to all obstacles now that I think of it I might need to make this more specific since there will be a lot more kinds of obstacles in the future and the name might be too vague. Currently all it does is move the obstacle in a single direction. One thing I learned making this game is making the obstacles move in a infinite runner game to give an impressions of the world moving is much easier than making the world move. public class Obstacle : MonoBehaviour { public Action<Obstacle> OnReachedEnd; [SerializeField] float horizontalSpeed = 6; //TODO: This needs to come from config [SerializeField] Vector3 initialPosition; //TODO: this needs to come from congif [SerializeField] GameObject endPoint; Vector3 moveVector; private void Start() { moveVector = initialPosition; } void Move() { moveVector.x = moveVector.x - (horizontalSpeed * Time.fixedDeltaTime); transform.position = moveVector; } private void FixedUpdate() { Move(); } private void OnTriggerEnter2D(Collider2D collider) { if(collider.gameObject == endPoint) { moveVector = initialPosition; if (OnReachedEnd != null) { OnReachedEnd(this); } } } } Obstacle Populator This is the class responsible for pooling the obstacles and initializing them from prefab. Current idea is as soon as the first obstacle reaches the end we have enough obstacles and to stop creating more and begin pooling instead. public class ObstaclePopulator : MonoBehaviour { [SerializeField] Obstacle obstacleTemplate; [SerializeField] float timeInterval; //TODO: This should come from config List<Obstacle> obstaclePool; bool stopPopulaing = false; // Use this for initialization void Start () { obstaclePool = new List<Obstacle>(); StartCoroutine(PopulateAtInterval()); } void InitializeObstacle() { Obstacle obstacle; if (obstaclePool.Count == 0) { obstacle = GameObject.Instantiate<Obstacle>(obstacleTemplate, transform); } else { obstacle = obstaclePool[0]; } obstacle.gameObject.SetActive(true); obstacle.OnReachedEnd = HandleObstacleReachedEnd; if (obstaclePool.Contains(obstacle)) { obstaclePool.Remove(obstacle); } } void HandleObstacleReachedEnd(Obstacle obstacle) { obstaclePool.Add(obstacle); obstacle.gameObject.SetActive(false); obstacle.OnReachedEnd = null; } IEnumerator PopulateAtInterval() { while (true) { yield return new WaitForSeconds(timeInterval); InitializeObstacle(); } } } Main Character and Obstacles Not much to say here so I leave you with a video of how the gameplay looks so far. Upcoming By the next log I hope to have some polishing done such as have scriptable objects to make the data configurable. Add a startup class to initialize my state. Add a boost particle effect during jumps.
  2. 1 point
    Sorry, ting lim. We do not permit homework help here. Talk with your fellow students and your professor. Good luck!
  3. 1 point
    Happy New Year to you as well. It's been an honour for me to be a part of the community you've helped create. I still remember the first time a blog entry of mine was featured. I was like " Waaaa? my blog has been featured? ", special moments hahaha, and GameDev keeps making them happen!
  4. 1 point
    The most-mentioned C# networking library for games is Lidgren; have you checked that out? A second option is RakNet with C# bindings, which has also been mentioned on these forums before. (I don't know if the bindings are P/Invoke or what, though.)
  5. 1 point
    I played around with this in the past, and there are pluses and minuses. Yes, you can work around head-of-line blocking for a single packet lost when multiplexing over two connections. Yes, it's not a lot of overhead to send "the last X inputs" in each packet, if you use RLE encoding of the inputs. No, you're not guaranteed that the browser will create multiple connections; HTTP2 and QUIC allow browsers to multiplex as much as they want across as many connections as they want. I have no idea what actual browsers and servers end up doing in practice these days. No, this won't solve all problems, because packet loss often comes in bursts, in which case all of your connections end up being delayed at more or less the same time. It's super simple to set up once you have the basic system going, though (assuming your code is well structured,) so it's certainly worthwhile testing out for your particular use case.
  6. 1 point
    Just going back to this original comment here: when I release my game I plan to credit everyone who has authored any asset regardless of license. Even CC0/Public domain will get credit. Why? Because it feels to me to be the professional and nice guy thing to do.
  7. 1 point
    Sublime 3, there, I picked a pseudo random program for you. I have a fresh Windows install so not a lot of programs to pick from. Gimp was a close second though!
  8. 1 point
    Okay, I was fully intending to be posting about my designs for a dungeon crawler prototype that would serve double duty as the intro for my other macro-project. That, will not be happening. I've decided that to split my attentions yet again would be folly. I have a good game prototype that I just worked my fingers to the bone creating, so I'm going to just go ahead and spend the next couple of months taking that to its next levels while sprinkling in some work on the main project so I don't lose my place too badly.. So, here's my rough list of SlingBot Boarding TO-DOs for before the end of February(gotta give myself some kind of timeline): Some competition modes, where you have to compete in a configurable number of races/etc on specific or user selected courses. Calculations for in-race behaviors, including disqualifications for going too far off course and bonuses for perfect course maneuvers. Investigate shaders, Unity makes it pretty easy to dig into them so I'm going to spend some time on that side of the fence. I saw a pretty cool how-to vid posted here about using tessellation shaders in Unity to make snow-tracks, I watched it thinking about how cool they would look in this game.. Maybe not for the WebGL version, but still... Player leveling/achievement/skills system. Refining/completing the replay system, build in the ability to save and share replays, auto share replays for new game records. More NPC types, and better record keeping for races including standings for individual courses. Ice Road and Tube construction, for building race courses and freestyle park features. Snowball Slinging(and other much more humorous objects). Knock the competition out of your way!! Gotta put the Sling in the SlingBots.. LOTS more stuff for the store, some upgrades, but mostly comical skins, doodads, and funny objects for slinging. Adjustable camera settings, including a few other standard and easily switched follow/view modes. PC, Android, and IOS builds. Actual real live online multi-player. Begin ID@XBOX application process. Not necessarily in that order... Yeah, I think that's enough for now... It only takes me a few minutes to come up with an oppressive list of things to do for this game, I spent most of yesterday evening staring at a blank Unity project trying to figure out where I was going to start on a dungeon crawler prototype. Everything I wanted to do I somehow talked myself out of before writing a single line of code or creating a single object. Just not time to change courses I guess.
  9. 1 point
    Interestingly, I think in a way, stress can help us create better songs/SFX. Think of it: if making music was easy, we wouldn't give the second effort to improve our songs. The feelings we get when we notice that something is off or missing is no doubt a useful tool.
  10. -1 points
    You must be living in some different Russia. I've summarized my 30 years of experience dealing with Russians in the following story: https://github.com/saniv/text/blob/master/one-life-in-russia-eng.md
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!