03-09-2019, 02:52 PM | #1 | ||
High School Varsity
Join Date: Jul 2016
|
The Saunders Project (New football game dev log)
Now that Desktop Dynasties is officially released, it's time to start on the next project! I'm sticking to football since I learned a lot during the development of DD. I don't want to lose all that by waiting too long.
My process is very much "figure it out as I go", so dynasties work pretty well to look back on later. Also, I've been doing a lot of streaming on YouTube and posting on twitter but I've found that a good old-fashioned forum is really the way to go. Plan for the Saunders Project:
My goal is to have something ready for Early Access by 4th of July weekend. Full launch before the college football season kicks off. (assuming I don't go broke and have to get a job before then) First up, play creator! |
||
03-09-2019, 08:18 PM | #2 |
High School Varsity
Join Date: Jul 2016
|
So here's where the week starts. I've got the shell of the play editor done. I can design offensive and defensive plays, but that's about it. No save/loading, and the real-time engine doesn't run them yet. (because it isn't written yet!)
This time around I'm going to make the play editor first, and then build out the real-time engine from this screen. This strategy will allow me to develop/test very specific things in the engine without having anything else to worry about. If I want to test 5-wide QB pass progressions, I just put a 5-wide play together and run it against a bunch of different defenses. If I want to run bubble screens against an all-out blitz, just draw it up and run it. Don't even need to have any playbook logic done! Heck, I don't even need the final list of player rating. I just need the ratings for what I'm testing. I'm also looking into a new interface style. I have a couple ideas, but I'm not ready to commit yet. That's why the interface is still Unity default. Hopefully, progress on this feature is fast and furious. I want to have it up and running by the end of next week. (including the ability to run plays from this screen) After that, the focus will be on getting the real-time engine/AI completed so the list of players ratings can be finalized. That's where the fun part is. |
03-11-2019, 08:22 AM | #3 |
High School Varsity
Join Date: Jul 2016
|
It looks like all the tools works in the play creator now. Had to do some serious debugging because the previous version of the play creator wasn't designed to have both offense and defense on the field at the same time. That's a lot of variable management!
As you can see here, both offense and defense can be constructed simultaneously. Few things to note here: (so you know what you're looking at as we keep progressing)
That's the basics of the play creator visuals. Let me know if anything is unclear as I start progressing through this system. Now let's see if we can get these guys actually playing out the play! |
03-11-2019, 10:52 AM | #4 |
High School Varsity
Join Date: Jul 2016
|
This just in: Making plays takes a while, and I should have a save/load system in place before I start testing the real-time engine.
oops! |
03-11-2019, 02:24 PM | #5 |
High School Varsity
Join Date: Jul 2016
|
Well, that didn't take nearly as long as I thought it would....
Plays can be saved/loaded/edited/re-saved and then loaded into the game engine for testing. I only have OL and DL logic implemented so far, but it's running the play as intended. I guess we can start moving things up, now that I have 4 free days in the schedule. Let's see if we can get ALL the real-time player AI and at least a draft of the interface done this week! It shouldn't be too hard to get the AI done, since I'm using many of the same basic ideas as the previous (Iverson) engine. I've refined the AI to be a lot faster and more efficient, but much of the logic is the same. I know I was talking big about going to a steering system for the AI a few weeks ago. After prototyping it, I realized it wasn't going to be any better than the point-cloud system I'm using now. I decided to stick with the point cloud system and refine it to be faster, rather than start all over with something new. Afterall, this will be my 3rd engine using the point-cloud. I'm sure I can make it better than ever! |
03-13-2019, 09:46 AM | #6 |
High School Varsity
Join Date: Jul 2016
|
Did a quick stream to lay some tape on the play creator and ball physics.
GoldenCrest Games Live Stream - YouTube I'm working on getting pass arc and speed right. One thing I learned in DD was that I need to have a system that allows me to vary the pass height/speed more effectively, so I can have more interesting throws. (like the endzone back corner lob) I'm trying out a new system that lets me change the throw angle, and it looks pretty good so far. (towards the end of the video) Today I want to lock down all the major throwing code. If I can always hit receivers in stride, no matter the distance or receiver speed, the rest of the passing game should be easy. Adding throw error or reading openness is straight forward, and easy to adjust without breaking anything. Getting the throw on target is unexpectedly hard. |
03-13-2019, 04:09 PM | #7 |
High School Varsity
Join Date: Jul 2016
|
I think I finally got the receiver targeting to work. I fried my brain in the process, but it looks like I'm within a half-yard accuracy on all throws, with the whole range of receiver speed. That's pretty good considering how much of it is estimation of the amount to lead the receiver.
I didn't get as far as I wanted today, but at least the hard part is done. I'll hit it hard tomorrow and see if I can catch up. |
03-14-2019, 07:57 AM | #8 |
High School Varsity
Join Date: Jul 2016
|
Here's the plan for today. (somewhat stream of consciousness)
Need to get the QB to read if a receiver is open or not, and then make the throw. To do that, I need to get the following systems in place:
After all this is written, I'll have to do another stream to lay it down on tape. There's no defense, so I'll have to fake the funk a little bit on openness reads. That's easy enough to do. |
03-15-2019, 08:20 AM | #9 |
High School Varsity
Join Date: Jul 2016
|
I went down a little bit of a rabbit hole yesterday on passing, but it's looking pretty good right now. The gunslinger options aren't quite right, but all the systems are in place. It should be easier to fine-tune those when we see how the QB reacts to live defense. Speaking of which, it's defense day!
Right now I'm working on man coverage, and the biggest problem to solve from the Iverson engine is how the CB positions himself in coverage. Iverson uses man defense skill and sets a "coverage error" based off the ideal coverage position. It kinda works, but I don't love it. I want the CB to pick a coverage style on his own, and have his skills only affect his reaction time and ability to defend/intercept the ball. I can't see a real reason to have coverage skill determine where he's positioning himself. That means I need a new AI to figure out where to aim at when covering a receiver. I think I've narrowed it down to two basic cover styles. What I'm calling Over and Between. I want the decision to be fairly simple, so I ditched a lot of complex cover schemes. The last thing I want is for this system to be complex and buggy. I think if I have the CB pick the most appropriate cover style based on the route/positioning, it should be enough to provide some quality pass defense. I'd use a ratio of vertical and horizontal direction in relation to the QB to determine the final positioning style Over: Receiver is running vertically towards the QB Receiver is running horizontally towards the QB Between: Receiver is running vertically away from the QB Receiver is running horizontally away from the QB Idk, it seems like this should work. I'll probably make that function stand on its own so I can change it easily once we get to play testing. |
03-16-2019, 05:21 PM | #10 |
College Starter
Join Date: Jun 2003
|
Looking forward to this!!
|
03-18-2019, 01:44 PM | #11 |
High School Varsity
Join Date: Jul 2016
|
Lots of nitpicky stuff to get done before any real progress on the engine can be done. I really needed to put some time into the play creator screen to get everything working correctly. At least now I have something that's fairly stable, and transfers all the correct information to the engine.
Once I got all that done, it became obvious that my pocket movement AI was totally messed up. The QB would never get to his drop correctly, and would do some freaking out before finally throwing the ball to some random receiver. In the end, it was a mismatch between the distance a player moves in a frame, and the distance we count as being at his target. The move distance was more than the arrival distance, so the QB was just bouncing back and forth over his move target. ugh, dumb error..... Once that was fixed, everything started working a lot better. I have a basic man defense AI in there, so the QB has something to read receiver openness against. Right now the QBs are still too good at reading defense. I'll have to find a good way to add a little more gunslinger into the mix. In this shot, the QB was on his 4th read before he found the open receiver streaking up the middle. I think there's enough here for me to spend a decent amount of time getting this AI right, before moving on to more AI. The things I want to lock in are:
Also, the snow is finally melting so I can get out and work off some of this belly! |
03-18-2019, 04:01 PM | #12 |
High School Varsity
Join Date: Feb 2007
|
Whelp, had gotten used to looking on Discord for news and missed this - good luck, off to a great start!
|
03-18-2019, 04:20 PM | #13 |
High School Varsity
Join Date: Jul 2016
|
Ah! Sorry! I'm not great at staying consistent in my media.
|
03-18-2019, 04:24 PM | #14 |
High School Varsity
Join Date: Jul 2016
|
There really is a reason I posted the dynasty here. For the beta/alpha program, I'm going to run it exclusively through a multiplayer league. As I looked around, I figured that this was the best audience for something like that. The OS forums are a little intense, and twitter is a little too random.
|
03-19-2019, 09:01 AM | #15 |
High School Varsity
Join Date: Jul 2016
|
Waiting for my build to get completed and dropboxed over to the streaming computer, so there''s some time for a chat....
Let's talk about "potential" and scouting. There are a lot of things I don't like about nearly every sports sim out there when it comes to potential and scouting. I tried to eliminate potential in DD, but that's didn't work as well as I'd hoped either. While out running through the snow yesterday, I think I landed on a good system! First, let's go through the thought process in case I change my mind again later. The potential (POT) rating: Not bad. It's simple, and makes sense. One number to determine how much your player could improve each year. I like it for ease of use and how easy it is to understand. What I don't like about it is there is no room for surprise or specialization. (and I don't like just hoarding the high-POT guys) Does a 99 rated QB mean he will develop into a passing QB or a running QB? If it's based on what he is right now, how can he ever change? Maybe that doesn't matter for a QB, but how about a defender? I think it really matters if a defender can develop into something different than what he is right now. The POT rating just feels too random or limiting. Scouting is problematic because you only get 1 number to determine the future career of a player. What if your scout is wrong on POT? Then you've basically misjudged the entire career arc. Too drastic. The potential "bars" (Like FOF): Lets you have different career arcs for players, and lets them change over time. Pretty flexible and powerful. I actually really like this system, but it falls apart on scouting. If your game is based on multiplayer like mine is, you can't have the entire potential system based on how well you scout because then you're inviting people to mine the save files for information. If the potential bars are random and not truly representative of the player's potential, well that's worse. No potential. (Like DD): Plus - Allows for completely freeform player development. Minus - Allows for completely freeform player development. There's no rhyme or reason to it. You can't use potential in any way to create a strategy. You just hoard young players and hope for the best. Also eliminates the need for scouting, which I kind of like. Scouting: Scouting in multiplayer is a tricky business. Scouting is generally based on the idea of imperfect information. You get a better idea of what players are, based on the quality of your scout. The problem with that is that he actual player ratings exist somewhere in the save files. If you have 100 owners in your NCAA league, they all probably have different scouts who will give different player value reports. BUT, all 100 owners need to have the real ratings in order for scouts/transactions/roster management etc to work. That means the real ratings are somewhere in the save files. You know for 100% certainty that the #1 task for all of the owners is to find the real ratings of players they are looking to invest in. It's an arms race between me to hide ratings, and owners to find them. (besides the fact that hiding ratings makes it hard for 3rd party tools) That's not how I want the game to be played. However, I also don't want every coach to get the exact same information and value the exact same players. That's kind of boring and will lead to one group of players getting heavily recruited while another group of players gets totally ignored. yuck. I want owners to have no need to dig for extra information. I just want them thinking about the decisions they have to make, not worrying about the quality of their information. That means rethinking scouting all together. I ended up designing a system that combined scouting with potential to solve several problems at once. First, some terminology.... rating - The number value a player has for a skill. Saved in the save file. skill - The actual variables for the player. speed, strength, pass skill, run defense skill, etc. value - Calculated based on skills/ratings. Used to determine how "valuable" a player is at something general. Things like "receiving", "man defense", "open field blocking", etc. These aren't saved, but calculated when needed. Not used in the game engine to resolve plays. Used to figure out matchups, though. (like "who is the best receiver?") The Saunders Scouting and Potential System: (v1.0)
In short, scouting gives you a picture of a player through the lens of what you value. This brings us to potential....
Potential and scouting come together here. Since each player has potential in each skill, and each scout bases his player value on your coach's idea of what's valuable, you get an individualized scouting report for each player's potential based on what your coach likes. I would see a recruit that has high potential in the skill I value as a potential star. Another coach might not see him as high because they value different things. It ends up being about what you value, rather than who gets better information. But wait, there's more! You might think "Well that's cute, but the engine is what the engine is. It doesn't matter what I like because the engine has a specific formula." Not really. The engine uses skills to determine what happens, not player value calculations. If a receiver is trying to make a catch, he uses receiving skill. If the receiver is trying to outrun a defender, he's using speed. If the receiver is trying to adjust to a thrown ball, it's receiving skill again. You just need to try to put your players in the right positions to use the skills you value, which you can do by designing plays in the play editor! BOOM! |
03-19-2019, 12:18 PM | #16 |
High School Varsity
Join Date: Jul 2016
|
The worst part about this phase of development is that there are so many things to do, I tend to get lost on tangents...
I ended up finishing off zone defense and implemented rollouts for QB drops, instead of hitting the coverage and QB reads hard. eh, maybe I'll just get all the basic AI done and then improve it as a whole. That seemed to work pretty well last time. By the way, anyone who joins the multiplayer league better be ready for that 5DL pass rush. I will demolish your QB. |
03-20-2019, 02:25 PM | #17 |
High School Varsity
Join Date: Jul 2016
|
Fried my brain today. I got all the non-special teams AI in place, except for open field blocking and open field running. Math hurts.
Right now a lot of it is pretty similar to the Iverson engine AI, but with some small upgrades that I've been wanting to do over the last month. The biggest thing is that I've separated decision making AI from movement AI. It seems like a small thing, but it's going to allow me more flexibility in changing player behavior on the field. Before, if I wanted to do something drastic in the decision AI, it messed up movement too much and I had to be careful. I don't always want to be careful. I think I'll get the open field AI done today and probably have it all linked up tomorrow morning. If that all goes as planned, I should be able to stream and test out various play designs to see if I can break the engine. That part is always fun. |
03-21-2019, 11:14 AM | #18 |
High School Varsity
Join Date: Jul 2016
|
Got all the AI implemented and........ WTF is this??
http://www.goldencrestgames.com/wp-c.../runissues.mp4 There is so much wrong with this I don't even know what to say! LOL! I'm 90% sure this has to do with my new "AI component sliders" system. Here's how it works:
As a default, I have all the sliders set to the same value. That means that each AI is probably overvaluing some components and undervaluing others. I think it's clear that the RB is overvaluing the follow block component. All the other players have their own component slider issues as well, but the RB one is pretty funny. Off to tune!! |
03-22-2019, 07:23 AM | #19 |
High School Varsity
Join Date: Jul 2016
|
Found a good system yesterday for tinkering with component AI balance. I've started running them all 1 at a time to make sure it is evaluating what I think it is. After that, I start combining them in interesting pairs to see what the result is. Then, I'll start slowly adding in other components until the behavior is just right.
Here's a good example to compare with the last video. In this one, I only have the "run upfield" and the "find open field" interest components turned on. (I also keep the avoid collisions eliminators on all the time) http://www.goldencrestgames.com/wp-c...dOpenfield.mp4 Just by turning those on, all of a sudden we get a more interesting running AI. Towards the end, you can see we need something else. We need to tell runners to run away from defenders, not just try to avoid running into them. It also looks a little weird that the runner takes that angle across the field when he has open field in front of him. There probably needs to be something that tells him to take the most direct route to the endzone. |
03-22-2019, 08:31 AM | #20 |
High School Varsity
Join Date: Jul 2016
|
This time I turned on the "straight upfield" component and gave it a 10% slider, turned on the "run away from defenders" component at 50%, and turned on the "follow blocks" at 50%
It's kind of cool to see the RB get more and more interesting with his decision making ability. http://www.goldencrestgames.com/wp-c...3/moreRbAI.mp4 I need to work on the other players before I can take the RB any farther. Right now he's the only one with meaningful AI, so this isn't really a representative scenario. Next up is line AI! |
06-28-2019, 09:42 PM | #21 |
n00b
Join Date: Jun 2019
|
wait
Currently the game has been completed yet, I feel that you have put a lot of time and effort into this game
happy wheels |
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
|
|