• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

skooter500/GE2-2021-2022: Game Engines 2

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

skooter500/GE2-2021-2022

开源软件地址:

https://github.com/skooter500/GE2-2021-2022

开源编程语言:

ShaderLab 58.5%

开源软件介绍:

Game Engines 2 2021-2022

Video

Teams links for classes/labs:

Resources

Contact me

Previous years courses

Previous years lab tests

Assessment Schedule

  • Week 6 - CA proposal & Git repo
  • Week 12 - Lab Test - 20%
  • Week 13 - CA Submission - 50%
  • End of year online test - 30%

Week 12 - Obstacle Avoidance & Lab Test & ECS Boids

  • Tuesday Class

  • Wednesday Class

  • Check out Avoidance scene

  • How are the feelers calculated?

  • What direction do they point?

  • How many are there? Whys this number?

  • How does the behaviour handle holes in the colliders?

  • Does the speed of the boid matter?

  • What direction is the force generated?

  • WHat alternatives are there to this?

  • How does the behaviour avoid certain obstacles while ignoring others?

  • How often are the feelers calculated and why?

  • How does the behaviour take priority over other behaviours?

  • How would you improve the behaviour?

  • How does it improve on Craig Reynolds avoidance behaviours?

Have a look at the PureECSScene in this repo and answer the following questions:

  1. What are Entities, Components, Systems and Jobs?
  2. What is the purpose of the class BoidBootstrap?
  3. In the previous examples, we explored two approaches to creating Entities. Describe them. Which approach was used in the PureECSScene Scene?
  4. How many systems are there running in PureECSScene? What are they and what do they do?
  5. In the previous examples we looked at two different types of jobs. What were they and what were they for?
  6. BoidSystem schedules IJobEntityBatch jobs. What are these and how does this approach differ from using Entities.ForEach?
  7. How do these jobs selects Entities to iterate over? How are the Components on these Entities accessed?
  8. What is a Native Container? Give some examples. What Native Containers does the BoidSystem create and what is their purpose?
  9. What Jobs does the BoidSystem schedule and in what order. Is this order significant?
  10. PartitionSpaceJob uses an algorithm called Cell Space Partitioning. How can this algorithm reduce the computational complexity the Flocking?
  11. What is the limitation of this algorithm?
  12. How are Boids assigned cells?
  13. PartitionSpaceJob uses a NativeMultiHashMap. What is the purpose of this data structure? What is the computational complexity of retrieving a value from a key in this data structure?
  14. How do Boids access the positions and rtotations of other Boids?
  15. In CountNeighboursJob, how does the algorithm determine how many cells are surrounding a boid that it needs to check for neighbours?
  16. What is the design pattern for retrieving all the values that match a given key in a NativeMultiHashMapIterator?
  17. Where does the algorithm store the neighbours for each Boid?
  18. What happens if a Boid has too many neighbours?
  19. In SeperationJob, what can cause the force to be NAN? How does the code check for this?
  20. How does Cohesion work?
  21. In AlignmentJob how are the forward vectors for each boid calculated?
  22. How is the desired forward vector calculated?
  23. How is the force generated?
  24. What algorithm does BoidJob use to combine the forces from the various behaviours together?
  25. How is the Boids rotation evaluated?
  26. In SpineSystem, what is the purpose of the WithNativeDisableParallelForRestriction annotation on the Entities.ForEach lambda?
  27. What jobs does SpineSystem schedule and what do they do?
  28. What parameters control the damping on the spine and what effect will changing these parameters have on the spines?
  29. What Native Containers does this job create?
  30. In HeadAndtailsSystem, what controls the speed of the procedural animation?
  31. How does the Head Animation work? Draw a diagram. What Unity API call is this system similar to?

Week 11 - ECS Creational Strategies - Psytrance Spiral generator

  • Tuesday Class

  • Wednesday Class

  • When are the entities created?

  • How do the entities get the mesh assigned?

  • What is the purpose of ParticleController and ParticleSystem?

  • What components does entity have and what is their purpose?

  • How does an entity get components?

  • Why does the onUpdate method copy fields into local variables?

  • What is a NativeArray? Why not use a normal array?

  • What does ref mean?

  • What is the difference between scale and NonUniformScale?

  • What does WithNativeDisableParallelForRestriction mean?

  • What is the difference between Schedule and ScheduleParalell?

  • What is the purpose of the entityInQueryIndex parameter?

  • What is a lambda?

  • Why does the function use math.cos instead of Math.Cos?

Week 10 - ECS - Perlin Noise Voxel Terrain

Week 9 - ECS - Introduction

Week 8 - Review Week

Lab

You can find the Finite State Machine code in repo! Check it out and see if you can incorporate it into your assignment

Week 7

Lab

I put the code for all the steering behaviours in seperate classes into the repo. There are the following Steering Behaviours:

  • Seek
  • Arrive
  • Pursue
  • Offset Pursue
  • Flee
  • Obstacle Avoidance
  • Jitter Wander
  • Noise Wander
  • Harmonic

There is also a scene called Components that shows how to add the behaviours to a Boid

In todays lab, you can try and attach some of these behaviours to the Boids in your assignment

Week 6

Lab

Week 5 - Offset Pursue, Refactoring

You could use the lab class to work on your assignment - get 3D models imported and flying around or here is an exercise you can do that uses the pursue behaviour we worked on last week:

Update your fork of the course repo to get the Pursue code we wrote in the class last week.

Detect if the pursuer catches the target and also if the target goes out of range and print appropriate messages to the console. Use colliders for this. Try changing the maxSpeed for both boids and see what effect this has on the ability for the pursuer to reach the target boid.

Week 4 - Banking, PlayerSteering, Pursure, Offset Pursue

Lab

  • Work on last weeks lab!

Week 3 - Physics, Arrive

Lectures

Lab

The implementation of BigBoid has been improved to implement "banking" - rotating around the local forward vector:

Video

The technique is discussed in Craig Reynolds papers. We will learn how it works in the class later :-)

Also there are method prototypes for several other behaviours you can try to implement in today's lab:

  • Arrive - Slow down as the boid reaches the target
  • Pursue - Intercept the target's future position
  • PlayerSteering - Take input from the Input system to steer the boid

Update your forks to get the code!

Week 2 - Boids, Seek, Path Following

Lectures

Lab

Path following

Update your fork of the repo with the latest code from the master branch of this repo. To do this, cd to the folder where you have your fork cloned and type:

git checkout master
git pull upstream master

This will get the code we wrote last week. Open the Seek scene and you will see a boid that implements seek in the BigBoid.cs class. Today you can implement a path following behaviour for the boid.

Check out this video:

Video

The scene contains a game object object with a script called Path attached. The path script implements the method OnDrawGizmos to draw lines between the waypoints on the path and to draw a sphere at each of the waypoints. The blue box is following the path. Today you can try and program this behaviour.

  • Implement the Path script that contains a public List<Vector3> waypoints containing the waypoints. The 0th waypoint should be the position of the path gameobject itself and the positions of the attached children should be used to set the subsequent waypoints. You can populate this list in Awake.
  • Add a bool flag on the Path class called IsLooped to indicate whether the path should loop back to the 0th waypoint when the Boid reaches the last waypoint. If this flag is set to be false, then don't draw a line gizmo back to the 0th waypoint.
  • In the scene, create a path using the Path script you made.
  • Add a a public field to the BigBoid class for the Path and drag the Path you made onto this in the Unity editor.
  • Now write code for a behaviour in BigBoid called FollowPath to get the Boid to move from waypoint to waypoint on the path using Seek and Arrive. If the IsLooped flag is true on the path, then the Boid should Seek the 0th waypoint again when it reaches the last waypoint. If this flag is set to be false, then the Boid should Arrive at the last waypoint. You will need to add a method called FollowPath and a boolean flag to indicate that the FollowPath behaviour is enabled.

Week 1 - Introduction to the course. Introduction to steering behaviours

Lab

  • No lab this week

Lecture




鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap