Tip International Competitive Racing Mod Development Thread

A quick tip you can learn to improve or setup NR2003 or related tool/program
This thread was originally posted on SRD and mirrored on Stunod Forums. SRD is now gone but you can find the archived version of this thread here (images are gone and since its on waybackmachine page loading is slow you you can see the original discussion back in 2019)



This is not so much a guide but just showing tips and the general leaning process of making a full mod, in this instance the ICR mod which has been released since 2020:



Preface

I don't usually do this with my projects (actually never in my entire NR2003 modding history) but I am going to be open on this one. Before everyone starts jumping all over the walls let me temper your expectations, please don't make me regret doing this. I am not and will not be the next Cup 2020 mod creator or whatever, if you are looking for an official Nascar Series mod creator I'm not the one to do it sorry. There is a reason why many modders don't publicly reveal their development of work becasue it usually turns into a fight over requests, when is the mod coming out, and people being 'disappointed' like I saw with the SRD NXS19 mod thread over there and I don't want to deal with that. I'll gladly ask a moderator to close and shut this thread down if it gets that.

I am making this open becasue this mod will essentially be a Pandora's box of opportunity and as I build it I would like to show the process as I go along with maybe motivating others to make their own mods. You may not like what I am making but it might allow you to see how a mod can be made and make your own as a result.

So yes, if you have probably noticed the past few days I had been 'testing' mod creation:

If above link dies pieces of this thread archived here:

The ultimate goal was a proof of concept so I knew how to hopefully make a real mod after I was sure I could pull it off. I am now confident that at this point I am ready to jump in. I know how to get custom models/texture in the game, damage, lods, and custom flap deployment working. Pretty much all of the core stuff. My biggest issues has been the scripting stuff, its my weakest thing when making mods for games. I am very confident when it comes to models and textures and graphics (basically anything visual) but the behind the scenes hookup stuff always has scared me lol.

I want this to be public so others who may be interested in this mod can follow along, provide input, and if/when the time comes help out with testing. So what is this mod all about? Well look below to find out.

Time to make a mod

The International Competitive Racing mod (currently a placeholder name, may change) is a mod directed towards those who like to paint fictionals and also create fictional manufacturer templates. This is pretty much a painters paradise mod as I like to put it where you can create your own series with their own manufacturers with ease having friendly templates and body shapes that allow easy to apply manufacture textures to make whatever you reasonably want for a stock car. Just like I always do stuff I make this will indeed be a fictional stock car mod. I don't know if we've ever had a fictional mod made as many are made replicating real car bodies but that is not the goal with this mod.

I've personally been wanting a mod that allowed easier fictional template creation. Over the years the real life counterpart Nascar series have gotten more complex and focus nose/rear parts towards each manufacturer. As a result it has made it increasingly difficult for fictional series creators to keep trying to shove that Pontiac on a Toyota nose for example:
NcL9MZ3.jpg

I tried to get a Pontiac on say the latest cup 2019 mod and kinda make some template but realized if I'm going to want to go back to the days of having the templates look exactly how I want its going to require an entire mod so thats why we are here. Some of my favorite mods to paint on were the default Gen4, BR2012, NXS13, and Gen6BR 15 mods. I pretty much want to bring the fun back to the fictional side of things. I've already made fictional tracks for my series so might as well have a fictional mod at this point too.

Goals of this mod

While I am building this mod I have specific goals I do want to hit, they are after all the ultimate reason I even want to make this mod in the first place.

To get a good idea of the goals for this mod here is a breakdown:
  • - Car body noses and rears will not be super complex shapes which will allow easy template manufacturer creation. Each body will have slightly different shapes (round, flat, etc) so different manufacturers that generally gravitate towards a certain shape will look best on those bodies.
  • - Templates will be configurable so layers such as the default manufacturers that are planned to come with this mod can be turned off and replaced by whatever you'd like to add.
  • -Mod will resemble a modern Gen6/7 stock car in Nascar Cup/Xfinity series but is not planned to exclusively be an exact 1:1 replica of those design choices (see below for spec details).
  • -Mod will have its own features, style, and custom series expectations. This is not a NASCAR mod but an International Competitive Racing (name subject to change) mod which will have its own sticker logo, body specs, rules etc.
  • -A mod everyone who likes painting fictionals cars and creating a fictional series can enjoy either online with friends or offline. Those who do like real paint schemes are welcome to recreate those on this mod but this mod is not meant to be a Monster Cup 2020 for example.
 
Last edited:
Introducing the International Competitive Racing Mod

Currently the mod is in pre-alpha stage. What this means is everything is still subject to change and the current look of the mod is not final yet. I have modeled the 'core' body at a moderate poly count at this point which will be used as the template for the 4 body makes:

ICR_01.jpg
ICR_02.jpg




For display purposes the windows were cutout so you could get a general shape but they will not actually look extruded inwards like that for the mod. Model has not been refined so it is still in a very blocky shape, the nose for example will be more smoother.

Body specifications

While I am making a stock car I would like to be very clear this isn't a Cup 2020 but just different nose and rear. It will be its own stock car with its own likeness but I did want to resemble the current Nascar bodies at their core at the very least. So far this is what I know I want this mod to look like:
  • -Body will have some characteristics from Gen 4 and Gen 6
  • -Roof will be more flat compared to the Gen6
  • -Rear Decklid will be larger compared to the Gen6
  • -Tire Fenders will not flare out as far and be more minimal from sides of the car
  • -Larger quarter panel section so logos placed will be big and able to have less distortion caused by tire fenders
  • -Shark fin design will be custom
  • -Rear Spoiler design will be custom
  • -Roof and Hood flaps will be present, an additional flap may be included on the decklid section as well
  • -Rear of car will not be canted but exactly symmetrical unlike the Gen 6.
  • -Middle section of car body will be the same for each 4 makes in terms of geometry. The front and rear bumper areas will be the only area that each make will differ in design (not counting template decals)


Development, timeline, and helping out

I've been away from doing NR2003 for awhile and just came back like no less than a week and a half ago and decided to just try and make this mod. I am very excited at this point in time to try and do this. Please understand things in life can/could get in the way in the future and I might have to pause development or just completely stop. Right now I don't want to of course and I'm going to go as far as I can so please be patient. I will try to be as transparent as I can in the development and if things get busy I will try to let you know if the mod goes on hold so no one is left wondering.

As far as timeline goes there is no planned time to get this done, it'll be done when I am satisfied with the results and quality. I have modeled much harder stuff than a car for NR2003 before (like my Skyrim/Fallout 4 mods) so that is not the challenge. It really relies on what NR2003 will let me do and keeping things reasonable. I can't promise this mod will be on the same quality level of say the SRD Xfinity and MENSCS 2019 mods but I'm going to try and make my mod the best I can with detail and paintable part options.

When it comes to helping out the team currently stands at 1 (me). I have always liked to do things on my own and at this point in development I don't need any current help so just sit back and enjoy the ride. To breakdown what is covered take a look:

Custom Models: Covered
Custom Textures: Covered
Scripting/compiling: Covered
Testing: Covered
3DS Max Render Scenes/Carviewer X files: Not Covered

The only parts I may need help later down the road on the actual mod itself is in orange with the scripting but right now after completing the proof of concept mod I know at this point how to get all the mod assets in the game. If I try and do more complex stuff I may need to reach out to some of the great modders in the community for help. When we get to testing while it won't be totally closed doors but I really do only want to employ the best. What I mean by best are those in the community I trust. These are people who have been around for awhile, have proven they give quality feedback, and are not just here to 'beta' test so they can play with a mod.

Once the mod is actually done I will need to find an experienced 3DS Max Render scene specialist or carviewer creator (unless I can figure out how to convert my 3dos to that format). This is an extra step for the community so they can have a render scene as I personally do not use 3ds max to render stuff but I know the majority of the community does so I'd like to provide those files.

For now if you have read all of the stuff above and think this mod is for you I'd like if you could answer the questions in this thread: http://www.stunodracing.net/index.p...l-painters-template-creators.8261/#post-77490 (link is now dead)

It will give me valuable info of things I could take into consideration while building this thing.
 
Development post #1

And here we begin with the first development post. The core outer shell body modeling continues as I tweak and refine the shape I am going for. I literally started on this model last night and have put about a good 6-8 hours in as of now. A lot of it has been playing around with the shapes and silhouette more than struggling or anything. I only get this one chance to lock the body down becasue once its done every other part (like the windows, hood, interior) will need to be able to fit it correctly.

For those following along all I have been using tool wise is Blender 2.8 with a few add-ons that let me model faster but nothing special. I started out with a cube in blender and have been extruding, adding edges, edge loops, and having the mirror modifier enabled so I can do half the work at twice the speed. As far as references go I pretty much have been free-style modeling and not using like a background car image or anything to follow. I did import another car mod at first to make sure my mod around the same size (so when it goes into NR2003 it won't be too small or large). I did this same thing with my blue box car test as well, thats how I knew the model would be the right size in NR2003.

Since the main post a few hours ago a few changes have been made to the model:
- Hood height has been flattened more closer so its not as tall above the tire rims on the side
- Sides windows slid back a bit along with b-pillar so front windshield could be more curved with the hood
-Additional edge loop added to nose so its more curved now
-Experimental roof rails added, these are taller like Gen4 rails would be with some extra design to them, still deciding on a final look but these would look cool to color to match a paint scheme for sure
-Side walls of the car have been straightened up more and entire top section of car is less an an angle

ICR_0001.jpg
ICR_0002.jpg

ICR_0003.jpg


For anyone concerned the still looks to blocky its not meant to get more detailed. Adding more edge loops or hitting the subdivide button is the wrong thing to do. Instead the trick is applying smoothing groups which will smooth the edges that you define and keep other edges still sharp as light hits them. I did a quick smoothing and you can see how the car appears to be more high poly buts its literally the same geometry:

ICR_0005.jpg

Currently the body is at 682 verts and the limit is 1000 before I'd have to start breaking things apart so things are looking pretty good with the poly count that low still.


Now lets talk Manufacturers, the plan with the 4 bodies is to include a featured make for each one with a template that includes a few other makes that can be used right out of the box. Here is the planned ones I'd like to include:

  • Make0 - Slight curved nose (what you currently see in screenshots) - Honda (Accord), Chevy (Monte Carlo or Impala), Nissan (Sentra)
  • Make1 - Harder flat edged nose - Dodge (Charger), BMW (M8), Volvo (S60)
  • Make2 - Slightly flat and rounded nose - Infiniti (Q70), Ford (Fusion), Tesla (Model S)
  • Make3 - Pointy angled nose - Pontiac (G8), Mitsubishi (Lancer), Toyota (Camry)
The ones in italics will be the default appearing make on the template and also the ones I will have the nose/rear modeled slightly for. I say slightly becasue I will design make3 for example have more of an angle for a Pontiac but it would still work great for like a Toyota or whatever other make may fit for it. While I have about 12 listed about these may change or switch makes depending on what fits best.
 
Development post #2

Its only been 4 days since this project began and already a lot of good progress with the body has been done. Behind the scenes I've also been preparing the code setting up all the segments for future preparation. While it is kind of skipping had since I don't even have all the models complete I'm able to start setting up the names and at least the basic stuff. As with last time a lot of work was done on the body fine tuning and carefully sculpting little by little and I am happy with the results coming out so far. Here are some of the main things updated since the last screenshots were posted:
  • -Top of car (this includes side windows and front) were slightly slid back to make a little extra room for the hood
  • -Hood lowered and angled slightly more to curve downwards towards the front bumper more so its not a blocky
  • -Roof rails were rebuilt, the side attachments are now less dramatic
  • -Placeholder roof details added
  • -Rear decklid fins slightly lowered, glass section added to the rear one. Front nose smoothed and sculpted to fit the Honda/Chevy
  • -Rear decklid fins made thinner
  • -Front splitter variation added
  • -Front and Rear windows have been blown out (aka detached from the body now)
screenshot000.png


With everything that has been completed there is still a lot left to do later on throughout this week:
  • -Rear bumper will will be lowered a bit so the rear trunk area will have a bit more space height wise
  • -Rear Bumper will be shaped slightly more for the make0 Honda/Chevy/Nissan body
  • -Tire rims will be smoothed with extra poly's (this one most likely be one of the last things I do)
  • -Rear Spoiler variations need to be modeled, currently still the same placeholder one
  • -Side windows need to be removed/blown out
  • -Extra details such as rear cam and any other fictional pieces I may want to include as eye candy (this would be the last icing on the cake)
  • -Hood still needs to be blown out along with the hood flaps
Speaking of windows, there has been some discussion about making the rear windows paintable, this would mean fake windows as they would need to go onto the template. The reasoning given was so things such as logos could be placed on them. Personally I would just want the windows to be like the others and have transparency along with not being included on the template. For those who do want them paintable a good example would be NR4 where the rear windows were fake:

nascariv_l2.jpg

Is there is big demand for something like this or is it ok to do without? As I mentioned earlier the sides of the car just above the rims in the rear are flatter to provide more sponsor space height wise so I was hoping that would mitigate any reason or need to put logos on the windows unless that extra free re-estate is good for a fictional series. If there is one thing that I will agree to is making the car more fictional friendly but keep in mind with every feature added it will increase the pressure to make this all fit on a template.

Up next is the nose, how is everyone feeling about it from the above turntable render video? Does that look satisfactory to work well for a Honda/Chevy/Nissan nose? Remember I'm purposefully not trying to go all out on the nose (as hard as it is to resist lol) becasue every bump or indent I add will make it harder for template creators as they will have to fight with distortion more. Not everyone has 3D Coat or Substance painter like me and can paint decals in a 3D Space with ease. I can always harder the ridge between the hood and front bumper, add side ducts indents or other stuff but I'd like to not go overboard.

More work has been put into the fictional roof rail design, I kept a similar look but lessened the side of the brace parts. Personally I am liking how they look but what do you think? I want them to almost act like a mini wicker bill from the 2000-2001 era with those braces breaking up the air slightly more. I know the model has (sadly) no real aero effect in the game but for fictional purposes when I race at superspeedways the racing is always crazy 3-5 wide with my ai settings so I want the car to look like its the roof rails in part playing a roll in the action on track just as the beloved wicker once did.

screenshot006.png
Last but not least for feedback in this dev post is the valence/ splitter. I've taken a bit more time to concept out a few variations which one do you like best? (I didn't smooth them out so they are a little blocky still)

Short valence and short splitter:
screenshot000.png

Tall valence and short splitter
screenshot003.png

Tall valence and long splitter:
screenshot004.png

Short valence and long splitter:
screenshot005.png

Of course there are just some rough ideas, I can always make another crazy shape, make the valence even taller or whatever. Personally I like the tall valence and shorter splitter the most or the default currently on the car.

For those following along so far I've only been modeling in blender 2.8 still. So if you are making your own mod the process is just a focus on refining that outer body shell still and making design choices. Of course if you are not making a fictional mod you probably won't be doing as much concepts as me as you probably are following a reference image. Either way there is no way to rush this process no matter how well you model. Its all in the details and every vert you move can dramatically change the shape of the car so its careful smoothing and iterations to get a final result.

Another tool introduced is Atom Text editor which is what I use to edit and create the script/code for the mod. It really does not matter what text editor you use but I like atom becasue I can collapse lines of code right out of the box and I like the dark mode theme it has. I will get into the coding part more in future dev posts but if you want to skip ahead to you can always watch the videos Cosmin made or Burnout videos as well.

I am quite surprised with myself and how the car is coming along, not that I doubt my 3D modeling ability but I still amaze myself when I see the model and realize it will be in the game eventually. I think its looking pretty good already. Currently the body shell is only at 800+ verts so we are still under the 1000 limit! Best part is once I blow out the side windows and remove the bottom part of the mesh the count will go lower or even out after I add the extra details on. I will then do some poly cleanup at the very end and merge a few of those verts that really don't need to have so many edge loops. I'm not trying to sculpt a roman statue here, if the body looks good enough I don't have to hit that 1000 limit just for the sake of it.

Well that wraps up this dev post, it was quite a bit to take in. Coming up in future posts I'll be talking more about the UV's and how the template may possibly look, the template dimensions, and what this could mean for details with the painting space. Also I am happy to report this mod will include paintable rims AND paintable tire brands. Someone on Cosmin's Discord reached out to me and shared the code to do this. I've already integrated it into my script for preparation. I'll be sure to show all the tire details in the future when we get there.
 
Development post #3

Lots has happened since the last update. The focus has still been on the modeling phase of the mod but this is soon coming to a close for body0 (aka make0). The outer shell for the car was mostly finalized with a few things updated.
screenshot000.png




-Tires are now fully modeled
-Rear quarter panel windows windows now have more space left to the quarter panel for large logos. The rear windows I've decided wont be paintable but this window design for the car should give that extra space to have logos are are very large so they won't be cut off nearly as much by the window in the way
-The Tall Valence, short splitter design is what will be chosen for the car
-More body details finalized (gas entry area, hood intake cutout, paintable wedge circle meshes,etc)

The main thing left was the interior detail (for the exterior cam views of the car, actual interior and rearview mirror are separate scenes for a later day). These past days and many hours yesterday the interior was carefully crafted, it literally felt like I was welding a frame together as I was basically reconstructing a model of the insides of a stock car. The pieces alone are simple geometric shapes, the challenge came in trying to fit them all together inside the car. The good thing is I only had to do this process once since every car body shares the same interior (hence it being a 'stock' car). I had to include a animated turntable for this, afterall I spent so long on it, would be a shame to just have a single screenshot:

The rollcage is compromised of triangular cylinder shapes which have its normals smoothed so it appears like a tube but its really really low poly actually.
screenshot002.png

The interior minus a few pieces hidden so it reflects what a real interior looks like if you have just removed the outer shell.
screenshot003.png





At this stage there are only a few details left to finalize in the model which is mostly on the exterior:

-Spoiler design/shape
-Extra roof details
-Hood Flaps cutout

These few things won't take me very long, once they are locked down then the next step will be model cleanup. Essentially I will be deleting faces that will never be seen. The poly count for the total exterior model is just about 8k which looking at other mods ranged anywhere from 3500-8000+ so I am on the mark. Once I collapse a few more verts and delete faces this will reduce my poly count even more. I'm targeting no higher than 8000 which is looking like it will be quite feasible so in terms of LOD1 memory my mod won't be doing anything extra ordinary in terms of poly count but it will be in the higher detail range for sure. A lot of that detail comes with the interior section. After everything has been decimated and cleaned up and every piece of mesh has been looked over like I'm going through a Nascar tech inspection the next phase will begin: UV Unwrapping.

This is the most important part for the exterior car body as this is where the template that painters would paint on is created. There will much more discussion about the UV template layout over the Thanksgiving weekend for the next dev post but I have already done initial tests and they are looking promising. With tools like 3D Coat I can cut out the hassle of unwrapping and with its real-time solutions I can pretty much in a matter of minuets spit out half decent UV template that I can then paint on in 3D Coat and test things out like stretch issues or other seam errors I see. So even if I am not finished modeling I can take my current work in progress and get a quick workable template going to see how things are shaping up:

UV_Temp.jpg

As you can see above I'm looking to have a template that is in a 1:2 size ratio where the height will be 1024 and the width will be 1536. This extra width will allow more painting space for things such as the paintable tires, extra parts, etc. This is a little different than other mods that just used a square, I'll be able to have a little extra real estate but it wont be overboard in texture size. For the released template the painter will paint on a 2048x3056 template so they can get high resolution with their renders and easier to paint on, it will be recommended to compress that down by half for NR2003 to the 1024x1536 size though. If anyone is wondering "NR2003 cant do a size like that" actually there are files in NR2003 for tracks (especially the grandstand textures) that have a similar size ratio. For example the Talladega stands have a UV size that is wider than its height. As long as the UV is in squares it doesn't matter.

So for those following along wanting to make their own mod its just been more Blender all this week pretty much with a little pre-3D Coat preparation. I recently upgraded to Blender 2.8.1 and the new outliner has made things a lot easier especially when you have a ton of models in a scene. This entire model so far has been made using basic modeling tools like extrude, creating new edges, mirror modifier, and smoothing the normals. All it takes it time in the details to achieve what you want really and knowing how to manipulate the geometry to create the shapes you need while also having efficient topology. If you want to model and make a model but don't know where to start I highly recommend Blender 2.8.1 and there are lots of great tutorials out there on how to use the tools and make objects. All you need is the time and dedication.

So that wraps up this dev post. Like I mentioned over the Thanksgiving weekend I plan to spend a lot more time on the mod. The days leading up to it I will have the model prepped so I can go into the UV unwrapping phase for all the parts.
 
With making something fictional 90% of the content never sees the light of day. With all the content I've ever made there are always scraps of assets that never get finished or were cut due to not fitting the final plan. The same can be said with this mod. Just conception of the Spoiler design I came up with a few:

Spoiler_02.jpg

#4 is the one I like to go with. It fits the overall angled design of the car and is unique enough its not just a cookie cutter spoiler from the real Nascar cars.

I also am thinking of going with form spoiler braces. Gives it a bit of that early Nascar 2000's spoiler vibe while still looking modern enough it would fit the car:

Spoiler_01.jpg


Had some good feedback from the SRD thread of this post over there so here is the updates so far:

My idea with the large indent with the spoiler would allow more air flow to the cars directly behind. Also if the car is going backwards and flipping I was going to put a flap on the decklid which when it raises would line up with that indent to 'catch' the air as air would go the least resisting path and go through the indent faster. Would it engineering wise and aerodynamically actually work in real life? Who knows but this is fiction so I'm going with that as the idea lol.


I kinda like #4 with the larger indent but here is what it looks like if I make the indent a little less (the right is the one with less)

Spoiler_03.jpg

You can see the original design for #4 from a rear cam angle isn't as huge looking. I wanted a cool looking silhouette and when I minimize it more its a lot harder to see from the distance when viewing the car from other angles.

The rear spoiler braces have been refined since last post as well, made then skinnier so I can have 6 fit on the back, feels a bit more 'full' with 6 I think.


EDIT:

Ok while making this post I've made a compromise with the original #4. How is this? Its slightly less of an indent, the spoiler was lowered like a few pixels as well:

Spoiler_04.jpg

As you guys can see you move a few pixels in a mesh and a completely different design that can alter the entire shape of a car, building, or whatever 3d0 you are making for NR2003 or any game model will occur (same can apply with textures and painters). You then go through a battle with yourself comparing design choices and ultimately having to come to a decision even if you like 5 other choices becasue you have to move on at some point, art is never done you just have to stop a some point or you'll never get anywhere.

With time and practice you can iterate on those changes though and get a more desired look faster, that comes with a lot of practice and knowing how to manipulate the edges, verts, and faces of a mesh to get it how you want it to look. But rushing this process can create undesired results. So far we are sitting at 65 blender files and I've really only been modeling this thing for a week and a half. I constantly use the 'save as' button when I make changes. If I somehow jarble up a mesh too badly (which I usually can just hit undo) I can always go back and recover the mesh from another file. One thing I love about blender (and many other 3d applications have a similar feature) is the new outliner with collections. I can create these folders and sub folders and store all the meshes in different places labeling them as I go. So I can make 100 spoilers and keep them in a sub section and toggle them one by one looking at them as I make changes). Tricks like this can really help you see differences in a model shape or even keeping backups of a copied mesh in the same file but not having them visible until you need them.

Regardless if someone is making the next Cup/Xfinity model, adding the Daytona Grandstands in, or making a firetruck 3do for a trackside object it all takes time and care to get it right. Anyone can open a 3D application and make a model. The devil is in the details as they say though and if you get those details wrong well you can ruin the entire shape or silhouette of the model. Just go back to the golden age of NR2003 when we had tons of mod teams making the Nascar Cup cars and trying to release them around the same time. Everyone liked one over the other for one reason or another and that is a perfect example of how little shapes and designs can make some like or not like the mod. Personally I never took sides becasue I liked we were getting mods regardless and having 2 in the same year for the same series was crazy cool.

But anyways, all I can say for those who really want a mod made exactly how they want totally go for it. The only thing holding yourself back is probably time to learn and use the tools but that comes with anything in life really. There are those in the community who will help (just as those who have made mods and knowing the scripting have been showing me the way). Speaking of that golden age for nR2003, it doesn't have to be over. We get enough people making mods and tracks again and we are back in the game.

I am hoping by me making this mod development public it will make the process less scary and less of a daunting feeling. It really just comes down to building blocks and keep going through the grind to the next phase over and over until you have a finished mod.

Spoiler_05.jpg

One more update tonight (probably). I added an upper lip to the top of the bumper for that extra definition. I also carved out the inner curved section of the middle section of the bumper so there was some detail to compliment the upper half. That lower carved out section I may keep for the other bodies or do something different for each. I don't want to touch the middle or bottom bumper areas becasue that would defeat the entire purpose of this mod. I want those to be flat and open as possible so any taillights or exhaust decals/rookie stripe things could be added easily there.
Another adjustment to the bumper I did was make the curved area not so large so the top and bottom section could be expanded height wise a bit more. Last but not least I subtly rotated the spoiler and its braces a bit so they are not as angled.
I think that is good now and will get back to cleaning the model up and preparing it for the UV unwrapping like I mentioned in the last dev post.
 
Development post #4

While the mod is still in pre-alpha and there is a ton of work left to do before this thing is every really finished some major milestones were completed this past week. These milestones have set up the foundation of the mod from just being some models in blender to a working car in NR2003 now. When we last left off I was still doing the modeling in blender. The next step was to unwrap the UV's for every part of the car. Essentially for those who don't do 3D modeling unwrapping is the process in which you 'unfold' the faces of a model onto a 2D plane. This plane then can be exported as template to a 2D/3D paint editing program where you add the textures to the model. This is how the 'templates' that people paint their paint schemes on the car are done. Every part of a 3d model has uv's unwrapped or the texture data wouldn't be able to display correctly. For several days the tedious but very important task of unwrapping every part of the model ensued.

For all of the parts of the car it doesn't really matter how I layout the UV map since the end user will never see these. The only real important one is of course all the paintable parts where the player will paint their own schemes. This is where I spent the most time making sure every paintable piece was properly placed on the template I was creating. It takes a lot of work to fit everything within the UV space. Also with the extra challenge of making sure there was little to no deformation on the UV body of the car. If you've ever painted on a mod and found out the lines on one side of the bumper didn't line up exactly on the quarter panel on both sides even if you mirrored your design that is the UV map not being entirely even. While its virtually impossible to make perfect UV's with asymmetrical models you can get pretty close but it takes a lot of time moving those UV shells pixel by pixel on the UV space so everything will line up for the painter.

To counter some of the challenges of UV unwrapping and the manual labor it can required 90% of the unwrapping was done in 3D Coat. Unlike unwrapping in even professional tools like 3ds max, 3D Coat has a more powerful method in unwrapping models in real time with real time feedback on warp issues, UV shells of the same model not being the same texel density (this means same size), and many unfold methods. Its hard to explain to non-3D modelers but essentially 3D Coat makes UV unwrapping a lot less time consuming and gets you unwrap results that are more accurate and better than having to manually planar project every section of a model and then having to manually stitch everything up manually. This doesn't take away from the understanding of UV unwrapping or skill needed though. The challenge to have multiple objects all sharing a single UV space so when the player paints a part the corresponding made sharing that same texture is colored correctly. You still need to define seams so 3D Coat knows how to unwrap the model and even then you need to spend time laying all the shells out in a coherent manner.

3D Coat offers a state of the art way to unfold UV's on 3d models in real time while also displaying a proportions texture over the model so you can see any warping as you unwrap the model:

Dev_4_001.jpg

The end result after every model is properly unwrapped for just the paintable parts is the template:

Dev_4_009.jpg


While its not set in stone technically I can't just easily go back and update the template once I export the model and start hooking it up to be a mod for NR2003. That would require me having to re-export the model again and prepare it for NR2003 which is a lot of work. Unfortunately that bug I mentioned in my previous post was what made me have to do over all the work for all the paintable parts. The original template was going to be a resolution of 3072x2048. Unfortunately NR2003 and winmip2 only allow square integer UV maps and 3072 is a not one of those numbers. I had to remake the template to be 4096x2048. Basically any number such as 2, 4, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096 in combination could be used as a template size and I just was dumb and chose the wrong size. This meant having to rebuild the UV"s for the new size. Now before you go crazy no 4096x2048 is not the intended template size for the game. I chose large so when painters and render scenes will be made the template will be the highest resolution. For the game I will have a layer telling the user to downscale their paint schemes to 2048x1024 or 1024x512 for low end pc machines.

Another bug I ran into I did something with my models for UV efficiency and that was to include UV sets, this is essentially one model having separate parts of the mesh shared across two or more textures. Unfortunately the 3ds max needed to make the mod didn't support that feature/broke my uv sets so I had to just include one texture per model. This is also what delayed me this past week.

So why did I go with a wide template and not a traditional square template like all other mods mostly do? The reason is more space. Things such as a paintable chassis and tires needed extra room thus the wider template. It was a lot of work and can get very overwhelming to try and piece it all together. For example to make paintable tires I needed 3 of the same model duplicated for the slow, medium, and fast speeds of the tires. This means they each need a different texture. To do that I had to place the tire UV"s for all 3 in different spots on the template if I didn't they would share the same space and the texture would look the same for each of them. As you can see here I color coded each tire in my template for testing purposes (blue = slow speed, yellow = medium speed, red = fast speed):

Dev_4_002.png

This way when the game switched between the 3 different tires the UV's of each model go to a different area of the template and 'pick up' those textures to use. So when you want each car to have a different tire brand you can and they will all have the correct speeds as well.


All of the other pieces thankfully did not need as much thinking to set up but they all had to be placed somewhere on the UV map so they could be painted. For example the rollbars since that entire mesh will share the same color texture I just placed all of its UV's on top of each other in the same spot. It is tricks like these that allow you to save more UV space. That is the ultimate challenge, not only fitting everything on the UV map but the more you shrink shells the less resolution they have. The goal is to make shells as large as you can while everything still fits on the UV map. There are some open spaces left on the template and that is reserved for when I model the driver I can use that area for their uv's.


But that is enough about the unwrapping process. I'd be glad to explain more but if you watch any 3D model tutorials or look up a 3D Coat UV unwrap tutorial you could see a similar process. Once I had all the models unwrapped and I cleaned up the models making sure there were no issues on the mesh and each one was under the poly limit it was finally time to prep the model in 3DS Max 8 so I could get the models in the game. Alongside the models being prepared in 3DS, the script also had to exist as well. The script (a psg text file) is the code NR2003 understands to compile your model scene file (a exporter PAS file). This sounds easy enough but its a very time consuming and complicated process. Essentially every model I intended to show up in NR2003 I have to 'call' it in the script and then tell the code what to do with said model piece. So If I created a Tire model the game doesn't know what it is until I use the NR2003 code and tell it this is a tire, where it should be positioned, and what state of the tire speed it belongs to. Just an example of the script here is a except for just the slow speed of the left front tire:


Code:
#############################################
        #Left Front [SLOW]
#############################################

    Tire_LF_Slow:                    MESH maxCars LF_Slow
    Tire_LF_Slow_Rim:            MESH maxCars LF_Slow_Rim

    L1_LF_Slow:        GROUP (Tire_LF_Slow, Tire_LF_Slow_Rim)

    Left_Front_Slow_LOD:  STATIC_LOD  (0 L1_LF_Slow,
           2.0    L1_LF_Slow,
           4.5     L1_LF_Slow,
           6.8     L1_LF_Slow,
           9.2     L1_LF_Slow,
           12.3   L1_LF_Slow,
           16.4   L1_LF_Slow,
           20.0   L1_LF_Slow,
           30.5   L1_LF_Slow,
           48.2   L1_LF_Slow,
           70.0    L1_LF_Slow)


It would unfortunately take me a creating a tutorial series to really show how to make the script but if you are following along and want your models in the game there are the tutorial files from The Pits.com, Burnouts video (which also has Dan Nibset's 3do files) and Cosmin's thread (dead link)
to show you more of the process. I basically have to build the script calling all my models and once that is done and I compile the script using makea3do I then have a working 3do file that the game recognizes as a car mod. This of course includes the textures that I set up as materials in 3DS Max and a custom series folder in the NR2003 directory. The end result is in game a custom mod with custom models and textures:

The tires in the menu having the wrong texture is a known bug

NR2003 2019-12-05 00-17-25-20.jpg
NR2003 2019-12-05 00-16-43-20.jpgNR2003 2019-12-05 00-17-04-35.jpg

Either I am having beginners luck or I've just conditioned myself to deal with making complicated mods for games but I only had to fix a few typo's and one silly error in my script and I got the mod working in the game. Shockingly even with no lods the performance in a 43 car field was hilariously decent. Of course I plan to optimize the crap out of the mod regardless and make the LOD's very good with a lot of tricks to lower the resolution for father distances best I can. When we get to that phase I break it down just like I did with the UV's.


It looks like the mod is close to done but that couldn't be farther from the truth. This is just one of the makes (still 3 to go) and there is no LOD's or damage, a custom interior or rear view model scene yet, presentable textures or templates for painters to paint on. In the coming weeks and month(s) that is where the grind will take place. My next step is to get some decent alpha/beta textures on this car so when I generate the LOD's I can make sure the textures are not distorting too badly.


So for those following along wanting to make their own mod: We've introduced a whole lot of new programs into the mix. I went from just using Blender 2.8 to now 3D Coat (UV unwrapping and complex texture work), Affinity Photo (for textures), 3DS Max 8 for model compiling. While you won't need to use the same programs as I am it makes things a lot quicker for me for sure. You can totally unwrap your model using just blenders unwrap features. Also for image editing textures you can use whatever 2d paint application you like whether it be gimp, paint.net, photoshop or whatever. But as you can see the process gets a lot more complex and you need a lot of skill to use the tools or have some friendly teammates who know those applications to take that role for you.


Speaking of roles and managing such a large project how do I keep track of everything? Simple I use an application for project management and issue tracking called Jira. While this is not something you'd have to use or need I highly recommend you have some way to track all the stuff you need to do, fix, and plan for. There are so many moving pieces and it can feel very overwhelming if you are just trying to remember it all. So whether you use a piece of paper, notepad, or another program I definitely recommend having some way to keep track. Sometimes you find an issue but are not ready to fix it, have a great feature idea, or want to know what to do next so thats why I started using Jira on my personal projects several years ago. Wish I used it earlier when making NR2003 tracks. Its been a super helpful tool since I started using it with Skyrim and Fallout 4 mods and now I'm using it for NR2003. This tool is going to be even more useful as the mod gets hopefully tested by others and I will have a way to get those bugs logged and prioritized to be looked into. It makes taking care of all the moving parts a breeze since I never have to remember anything on my own and just cross one work item off the list and if I need to create new stuff I can log it and forget about it until the time comes. I built a custom database just for my NR2003 projects and here's what one of the pages in Jira looks like, each of those lines is an item that opens a new window with more info. I can attaches images, videos, code, or whatever I need as well:
Dev_4_008.jpg

Well that was a long post, I feel these dev posts are getting longer, I'll try to keep the next one shorter.
 
Development post #5

In this update I will focus on texture work. While the mod has a lot of work still to go the main parts of the car are finished modeling wise (and working in-game) which means I can begin applying more realistic textures to it other than the placeholder checkerboard you saw in the previous post. The main reason why I am having the textures a bit more refined now is so when I begin the LOD's and damage (these will be discussed in future dev posts). This will allow me to make sure as the mesh deforms things look good with textures and they do not become stretched badly. With a plain mesh it would be a bit harder to get the desired results. The goal right now is to not complete all the texture work for the main parts of the car (body, interior, windows, engine) but rather have them with at a minimum 70-90% refined textures (no specific manufacturer decals yet). The past week I have solely focused on doing texture work and you can see the 4 main car parts and what they look like textured now, keep in mind these textures are not 100% finalized, there are some missing details I wish to add later on and other textures I may refine more later on:

Dev_5_001.jpg

Each object can have up to 3 different texture maps: defuse (the color), specular (how shiny it looks), and transparency (any areas where it needs to be see-through or invisible). These maps are applied to the specific shader that is assigned to the object to define how it looks. Most objects only need defuse and specular but things like windows, windows nets, or other pieces will have the transparency map. One trick to have hyper detail but not at the cost of high poly is to make parts look complex and add transparency to it instead. For example the window net, there is no reason to model a window net in 3D with all those holes in the face. Instead you can have a very simple low poly rectangle and use the transparency map to cut holes out of it. Of course transparency maps are still using memory but its far less than the game having to render 3D geometry on every car. Anywhere where you can get away with transparency it is recommended over dong complex modeling.


For now I'm only going to focus on one aspect of how I did the texture work as it would be impossible to go over it all in a single post. I will breakdown how I did/do textures in that area and that will hopefully make it easier for you if you are doing textures on your own mod. For this breakdown I am focusing on the tires. The first thing is knowing what texture tools you are using. For me I prefer Affinity Photo but you can use any editing software you like as long as you are comfortable with it and its capable of getting the desired quality/results you want.


The Tires are the only part of the car texture wise that I refined heavily at this point where they are nearly 99% done as far as I am concerned. The only aspect of them not done would be making the layers more presentable for a template but that is a step near the very end of this mod process. The quality depends on how much time and skill you put into it. If you are not too worried about making hyper detailed textures then you won't need to go the extra mile, but if you want results like my tire you will need to have a good understanding of how lighting works on an object and being able to recreate surfaces on a flat model. In most cases you can use textures from images and apply those to an object to make it more realistic, the other method is recreating the textures from scratch. In the case of my tire model I recreated the entire thing from scratch minus the logo brands and the hub on the back of the tires which is an image, everything else you see on my tire I created from scratch from blank layers right our of Affinity Photo.


The benefit of creating content from scratch is you are never restrained by just images you find on the web and how they look, lots of images are of poor quality, incorrect angles, or don't cover enough to texture you entire object. The drawback is of course it takes a lot of time and skill to get desired result. On the flip side, using textures you find and placing those on a model is much faster, the drawback is quality can vary and it may not always look right as you have to stretch and move textures to fit your UV shell. As you can see by my tire UV layout it is a bit different:

Dev_5_002.jpg

Instead of unwrapping it all in circles I went the route of creating it in strips. I did this deliberately as I personally find it will be easier to create the textures and not have to worry about curving everything. It also saved me more space on my template since I can stack everything right next to each other instead of circles which would create a lot more negative space. The only part I have to keep a circle is of course the middle hub area (not shown in above image, as those shells are in different section of the template). So what is needed in an image editor to make textures like I did? For me I used these tools within affinity photo (other good image editing tools like photoshop should similar tools): Shape/pen tool, brushes, layer blending, and filters. A combination of these tools you can take a blank layer and create very realistic looking textures. It is just knowing how to manipulate the layers to achieve the desired result. To begin with the tire I create a blank dark layer, this serves as my base layer for the tire:

Dev_5_003.jpg

The next step for the out tire section is to give it some 'texture' as racing tires are gritty and no surface in real life is just a flat color. It doesn't matter how new something is, with being in a real world no object is pure black or pure white, it will always be a little off. For this I used a gritty brush on a new layer and painted some detail on the tire layer. Then I added a slight noise filter on top of the brush to give it more depth. Lastly to make the brush I painted with work with the tire color I used a blend mode called lighten and lowed the layer opacity down:

Dev_5_004.jpg

Next I applied some shading, this is just a white strip layer that I blurred then again used a blend mode (like overlay or lighten) to make it match the tire. This gives it a bit of a shiny look and gives the appearance of light touching the other sections of the tire more. Its important to understand how light works when doing 3D texture work if you have to 'paint' it on a 3d model. As you know NR2003 is older and as a result objects don't render shadows on themselves like new games so you have to create fake lighting on them yourself if you want it to look more realistic:

Dev_5_005.jpg


I've just been focusing on the Outer section of the tire (where the goodyear logo would go for example) but I work on the other sections of the tire at the same time applying a base color and shading as well:

Dev_5_006.jpg

Now that I have defined the core colors and highlights of the tire can begin to add some detail to the texture to make it start looking like an actual race car tire. To make these details from scratch I used simple shape layer and added color overlays, shadows, blurs, blend modes, and other assortment of basic tools that affinity photo offers. There is no other way to explain it other than taking a simple plain layer and manipulating it to look like the texture you are wanting to achieve, in this case indents, bumps, and shading:

Dev_5_007.jpg

Dev_5_008.jpg

For a lot of these decals such as the text I created those by scratch in a seperate file and then applied the created decal to my tire blending it into the tire texture, here is just one example of the decals I made:

Dev_5_012.jpg

With the tire finally done the last steps it to punch up those colors and copy the slow tire texture to the medium and fast speed blurring them. Using simply filters like directional blur its not too time consuming to duplicate the textures for the other tires, the only challenge is making sure the tire base color will be visible as these are paintable tires with interchangeable tire brand logos as well. Also shown below are the other sections of the tires such as the inner hub and the inner tire wall which was location on the interior texture that is not paintable by the user:

Dev_5_009.jpg

Dev_5_010.jpg

Dev_5_011.jpg

With the tire being textured I of course was viewing how progress was going in a 3D view to make sure everything was looking correct. I personally used Marmoset Toolbag 3 for this as it updates in real time any time a texture file is updated so I never have to reload. But for you, you could use any 3D application like blender ot 3ds max to view you textures on the models however you want. So the final result after 3+ days and many hours of work a scratch made goodyear tire is created for the mod in all its glory:

Dev_5_013.jpg

In many cases you will never be this close to the tire either in render scenes or in the game so I think I did an ok job with the texture work all things considered as I've never made a tire for NR2003 until now. Of course I didn't go through all this trouble to make a tire to just have goodyear, the tire is paintable both in color and brand choice so here is just one example of what you could create on the template when the mod comes out. I don't want to spoil everyone too much so just one picture for now:

Dev_5_014.jpg

With the tire completed I moved onto the rest of the car and that is how I did all the textures pretty much. A good solid week+ of work and many hours later the car had 70-90% completed texture work, this included transparency and specular maps where needed as well:

Dev_5_015.png

Dev_5_016.png

Dev_5_018.png

Dev_5_017.png

Dev_5_019.png

Dev_5_020.png

Dev_5_021.png

Of course renders are nice but in-game is where it will really matters as this is the end result the player would see:

NR2003 2019-12-15 22-28-55-29.jpg

NR2003 2019-12-15 22-28-57-14.jpg

NR2003 2019-12-15 22-29-51-28.jpg

NR2003 2019-12-15 22-30-40-59.jpg

NR2003 2019-12-15 22-30-48-64.jpg

NR2003 2019-12-15 22-31-09-45.jpg

NR2003 2019-12-15 22-31-49-74.jpg

So there you have it with textures and a breakdown of them. For those following along the tools I used in this phase were: Affinity Photo, 3D Coat, and Marmoset Toolbag 3. 90% of it was done in the 2D paint application Affinity Photo while some of the shading and highlights I generated with 3D Coat as it was not only quicker but more realistic than having to hand paint every single piece manually (there was still a lot of manual work painting shading though). Then with marmoset it was an excellent tool to view the textures on the 3D model in real time as I was updating the textures. You just have to focus on one piece of the model at a time refining the textures as you go. It really is intense focused work that will take hours and days no matter your skill level really. There are of course some ways to speed the process up but in the end if you want your mod to achieve that good quality and realism the time spent making good shading and realistic textures just really comes down to fine tuning them and observing how real-world objects react to light and materials.

The next step from here is to get the deployable flaps on the hood, roof, and decklid working. I do not think this next part will be too time consuming so I am hoping by the week's end I may have another update. With that said starting this next Saturday I begin my 16 day vacation where some of those days I'll be spending time with family for the Holidays but I will also be working on this mod. It will be the largest chunk of time I'll have uninterrupted to really dive into the next parts of the mod which is the more complicated lods and damage for make0 before ultimately starting over this process with make1, make2, and amke3. Thankfully make 1-2 I don't have to do all the work over as many parts such as the core body, interior, engine, and windows are all shared textures and models. The only really difference will be the front nose and rear bumper contour shapes.

Last thing is a question, and please be honest: During my time off should I spend 1 full day making a tutorial on mod creation that covers the core process or should I just spend that day instead and allocate it to continuing this mod? If I do the tutorial I don't want people to just say yes and then my time is wasted becasue no one really will watch it or use it to make a mod of their own though. If its not urgent then I could make the tutorial(s) after I complete this mod several months from now. Let me know, I will have some good free time and I can either just use the time to keep working on the mod or take a day off and make a video tutorial.
 
Development post #6

I didn't expect to have another update so soon but things have been going so smooth I finished early with the flaps for the car already. With the car model completed and in good shape the next step was to add deployable flaps to the car. While it is simple geometry to create the flaps it takes a bit of planning to make it look good and work in the intended design.

The one big trick to making the top of the roof flaps have the same texture as the car body when they deploy is to create them directly from the car body mesh already. I have already drew outlines on the hood, roof, and decklid where the flaps would go. The only thing left to do was duplicate the mesh and cut out the flaps making those separate parts. For the bottom and undersides of the flaps I UV mapped those in a new section of the paintable template so I could have different textures. Before I dove heavily into any finalized texture work of the flaps I first color coded them similar to how I did the tires so when I see them deploy in-game I know they are working as intended first.

To define any flaps you create a bounding box that surrounds any areas the flap goes and with the code you define each flap mesh telling the game its part of a flap and which state is up and down. Thanks to Cosmin I was able to go the extra mile with my flaps and do the cool hood flaps where when they deploy the hole in the hood as expected appears.

Of course with my flaps I have an additional one on the decklid, I wanted something cool and unique for the mod so my car has flaps on the hood, roof, and decklid. You can see here all the flaps pieces in their down and up positions:

Dev_6_001.jpg

How the flaps work in the code is as the car gets to a certain speed (defined by the game engine) they will deploy. By telling the game in my code each flap's up and down state the game will move them up and down between those positions. After the flaps come back down and the car is under the deploy speed they disappear. So for example on the hood at all times to fill the hood flap holes I use a static 'fake' hood flap this then disappears the moment the real flaps appear and are replaced by a down and up hood flap mesh as its moving around. After the flaps complete and go back down the fake mesh appears back again seamlessly. The roof and decklid have no hole due to the fact I used a fake mesh that only appears as they deploy and give the fake impression there is in interior to the flaps.

I do not know how but it took me only a few hours last night to set up my meshes, write the code for the flaps, and compile it. Literally no joke the first time I compiled the code it was a success with no errors! Even more amazing is the fact when I went in the game for the first time the flaps deployed exactly as expected. I don't think any other mod has a decklid flap so I was not doing something done before so I didn't expect it to have deployed right the first time at all. Usually when you work on a project you have errors and things need to be tweaked or you forgot something but for the first time it worked out perfect in one try. Honestly the only thing I could say to it all working the first time when I went in game and saw it was this (skip to 58 seconds in):



Jokes aside after they were functioning I spent this afternoon for a few hours doing the texture work, here you can see the bottom (dark ones) and undersides textures. These are part of the paint scheme UV set so they can be colored different colors but will default to grey just like the chassis:

Dev_6_002.jpg

The end result after the meshes, code, and textures are done is working flaps for the car:

I will mostly likely tweak the hood flaps a bit so they don't look like they are barely hanging on. Also the specular level of the underside I plan to reduce so they don't appear as shiny later on too.


Dev_6_006.jpg

Dev_6_007.jpg

Dev_6_005.jpg

Dev_6_003.jpg

Dev_6_004.jpg

It is a little hard to see the detail up close so here is what it they look like in a deployed state in my render scene. Personally I really like the 3D look I did to them to give that fake impression of something being under the flaps as they are deployed, makes the car feel more real (even when wrecking). Like in my previous post about textures its all about lighting and shading, you can do so much with a few simple tricks to make some convincing details on a 2D plane mesh:

Dev_6_009.png

Dev_6_011.png

Dev_6_012.png

Dev_6_008.png

Dev_6_010.png

With the flaps done so early in the week I am ahead of my expected schedule by several days which is really cool. I plan to take it easy for a bit but will get ready the next step which is at last the ever convoluted LODs. This is where the mod will finally begin to be optimized for make0. Of course after that comes damage and that will add a whole new layer of complication as those will need LOD's as well so the next two parts will be critical to doing well. I honestly don't know how long the next step will take but I will post an update when its completed going over the process.

Until then, for those following along making their own mod I will say a big part that helped make this step in the process really easy was having done a proof of concept mod already (my blue box mod). It really helps to having gone through the process in a really quick way so you know what to expect. I had already done damage with my blue box car for example so I have an idea of what I must do when I get there for example. Also, I have not mentioned it yet but saving work often and in MANY MANY MANY iterations is a good habit. If I ever make a change I feel is significant I 'save as' my file whether that be a texture file, my 3ds max file, or the script. You cant always rely on that undo button in a program and also there is then no pressure to mess with thing because you know you can always just reload the file after you try something out. The extra measure I go is backing up all my work on a frequent basis to an external drive. The last thing I do to backup everything is last known good build. Essentially this is a folder of my series folder from NR2003 and my script compiling files in a directory with a date. These always include major milestone completions, so if i the event I really mess a script up or I can't get the mod back to a workable state I can recover the files again.
 
Development post #7

For this update post it is all about performance optimization when it comes to the non-damaged version of the car for make0. Whether its a new game or old like NR2003 game memory is always important to keep in mind. Even with more powerful systems and technology as the detail on models and graphics go up so does the demand for performance optimizations. This is no different with NR2003 and what it can handle. For NR2003 the engine is not new enough to take advantage of newer graphics cards unfortunately. As a result even 'low poly' models for this game can kill the framerate. The car I modeled at LOD1 is in comparison to most modern games trivial. You could have 1 million of them on a track in a new game and it wouldn't even put a dent on your hardware for what it could handle. For NR2003 though just a few cars its becomes monumental in memory usage.

My car at its highest detail is approx 6000+ tris (triangles):
Dev_7_001.jpg

Doing research and looking at other mods they all range anywhere between as low as 1000-2000 tris to the newer ones that are 6000-10,000+. The biggest importance no matter how many tris the mod has is no piece goes over 1k tris and the more tris you have it means the more work to optimize for the other level of detail states is needed.

For example 6000 tris for 43 cars would be about 258,000 tris. This doesn't even factor in the wheels, which for my mod the highest detail tire is 394 but you have to remember there are 4 tires per car so that is actually 1,576 tris per car which = 67,768 tris with 43 cars on the track. So in total that is about 325k tris that would be visible at all times with 43 cars on the track. This is not even factoring in the extra details I am still missing like the driver. Though he'd be pretty low poly at LOD1 it still more poly count regardless. Like I mentioned before if this game could really utilize graphics cards of today that can handle millions and millions of tris 325k would be child's play. But since its not made for them its limited is using what the game engine can see. So to that we have to play by the rules of NR2003 and what it allows and make the mod to work with the game.

To reduce that overall number, LODs (Level of Detail) needs to be generated so the farther cars are away from the player the less detail they render decreasing the poly count and increasing the framerate. Not only does it help memory for NR2003 but the farther away a car is you won't be able to see all the detail so reducing it won't be a problem in screenshot or 'eye candy'. So how are lods made? Its quite simple: You remove geometry on the model pieces by reducing the poly count or just straight up deleting/cutting out parts of a model that wouldn't be seen at a distance. The farther away the model gets the more you can get away with reducing the poly cunt and detail. You start by removing the smaller details first and work your way up to removing even bigger pieces until only the core shape of an object at its farthest distance can be seen.

I think you understand what LODs are and the role they play with NR2003 so the only thing left to do is make the LODs. To do this I take my LOD1 model and copy all the pieces and rename them. For my mod I use LOD1, LOD3, LOD5, LOD7, LOD9, and LOD11. NR2003 has 11 lod states and I don't need to use all the in-between ones since the steps between reduction for my mod will be enough. Once all the parts are copied I use a modifier in 3DS Max 8 called MultiRes to reduce poly count on each model. I can slide the percentage and see in the viewport the poly count lower and see the model pieces disappear if I go too aggressive.

So between using the MultiRes modifier to reduce poly count per LOD level and just removing objects here are the rough results of each lod state:

Dev_7_002.jpg

LOD1 (L1): This is the highest poly model. It is what I modeled in the first place. In most cases LOD1 is only seen on the player's car when they are using the outside camera views. The only time AI show up as LOD1 is either in reply mode when you would view their car or you use the bumper cam and get right up to one of the AI cars.

LOD3 (L3: At L3 this is where most AI cars near the player is seen from 2 to 4.5 meters. It my not look like any different between LOD1 but as the image shows the poly count was reduced by a 3rd. Most of the removed tris were from flat surfaces and areas that were not crucial to defining edges of the objects. L3 still contains all the same objects as L1 as well. All of the interior models including the windows I reduce their textures from 2048x2038 to 1024x1024 maps as well.

LOD5 (L5): At L5 where this model will appear at the distance of 6.8 to 9.2 meters the poly count goes down yet again by more than half of that from LOD3. The L5 model still looks decent but looking closely you can see some of the parts look less details and some interior parts are missing. L5 is where the majority of cars on the track would appear that are somewhat near the player's car but not too close. All of the interior models including the windows I reduce their textures from 1024x1024 to 512x512 maps as well.

LOD7 (L7): By L7 I get really aggressive and start removing and decimating the model a ton, at this point all the objects left on the car doesn't even total 1000 tris, that is less than the 4 sets of tires tri count at L1. At the distance of 12.3 to 16.4 meters Its more important about just having the big shapes of the car mod look correct and the little details don't really matter. To further increase performance by getting away with removing certain pieces the paint scheme plays a good role in this. For example if you notice the 3d splitter model is gone but I have an orange stripe still on the front bumper to make it look like a splitter is still there. Tricks like this really help in giving that illusion the parts still exist even when they where removed. All of the interior models remaining including the windows I reduce their textures from 512x512 to 256x256 maps as well.

LOD9 (L9): By L9 the entire car is at a whopping 300+ tris. At a distance of 20-30.5 meters all that matters this far away from the player's car is the big definign parts fo the car which would be the car body really. This model si so far away from the cmaera as well it doesn't matter much if the modle has holes and looks really 'crumpled up'. Almost every object was gutten from the inside except the chassis

LOD11 (L11): LOD11 is the lowest level in NR2003 ranging from 48.2 meters to 70+ meters range. I think anything past 70 the cars won't even render actually. By now we've reach comical garbage levels of a model. So much so it wouldn't even qualify for a Nintendo 64 model it looks so bad. All that matters by this distance is the player will see a 'box'. I if I wanted I actually could have just made a rectangle and mapped the paint scheme to it as an alternative . You will notice however there are tires on this LOD11. By this distance I actually forgo any real ties and replace them with squares and a 128x128 images of my tire. Surprisingly for a 128x128 texture it doesn't look half bad and even that won't be seen this far away from the camera.

The same with Tries was also done LOD wise at a much smaller extent:
Dev_7_003.jpg

LOD1 (L1): This is the high poly model I made which will appear from all distances from 0 to 4.5 meters.

LOD5 (L5): For the L5 model I reduce the poly count by a 3rd. This models appears from the distance of 6.8 meters to 20.

LOD9 (L9): L9 tire model is only 100 tris and appears for anything past the distance of 30.5 meters.

Once the lod models are all done its time to code it all in the script so I can tell the game what models will appear at what distance. This is simply done by declaring each model in the script and grouping them accordingly so they appear in each distance defined. For example say I want to take the LOD5 body and I need to tell the game this should appear for the L5 distance:


First I call the model from my 3ds max PAS file:
Code:
L5_body0:     MESH maxCars       make0_body_L5

L5_body0 is what I am telling the script to call the car body. make0_body_L5 is the actual 3d model name in 3ds max. You can name these whatever you want really, its just important to have an easy naming convention because lots and lots of models are needed to be loaded for a mod and it can get confusing if you name everything crazy names in your max scene and the script. After I've told the script which model to find and what to call it I then have to tell it what LOD group to go into. A LOD group simply groups all parts into a group that will essentially follow eachother together in whatever script they are then put into. For LOD5 my group looks like this:

Code:
Exterior_make0_L5: GROUP (lf, rf, lr, rr, L5_interior, L5_engine, L5_windows, L5_parts, L5_rollcage, L5_spoiler, L5_banner, L5_chassis, L5_body0, L5_hood0, L5_rear0, L5_splitter0, flaps_roof_lod, flaps_none_lod, flaps_hood_lod, flaps_deck_lod)

You can see above the L5 body in its group with all the other parts I had also called into the script that belong to the LOD5 model. After the group is made I then have to stick this group in the static LOD group which will tell the game to make LOD5 appear at the distance I want it to:


Code:
Exterior_make0_LOD:  STATIC_LOD

                                (  0    Exterior_make0_L1,
                               2.0    Exterior_make0_L3,
                               4.5    Exterior_make0_L3,
                               6.8    Exterior_make0_L5,
                               9.2    Exterior_make0_L5,
                               12.3    Exterior_make0_L7,
                               16.4    Exterior_make0_L7,
                               20.0    Exterior_make0_L9,
                               30.5    Exterior_make0_L9,
                               48.2    Exterior_make0_L11,
                               70.0   Exterior_make0_L11 )


Again, you can see our LOD5 group (Exterior_make0_L5) along with all the other groups and their models to the respective distances. You can see the numbers and these present in meters when they appear. These are as far as I know hardcoded in the game.

While that is obviously not the end of the line for the code that is a snippet of how the LOD's are made, setup in a script, and then will work correctly in NR2003. Now realistically the LODs from farther distances would appear something like this if I laid them out in an image according to how far away they approximately would appear in the game:

Dev_7_004.jpg


In game here are the LODs working in a full 43 field on the front stretch of Daytona, you can see the framerate is stable:

NR2003 2019-12-24 00-35-35-27.jpg


Now of course, this doesn't mean its an open and shut case for performance but looking at and playing with other mods they get about the same (or in some cases less) framerate so I feel my mod will be optimal for anyone who could run those same mods. There will always be people with good or bad hardware that get odd crashes or frame issues even if the majority have no issues. I feel I've done a good job already optimizing the mod. One way to really crank this up is to include 4096x2048 paint schemes on all the cars, even compressed they are about 5+mb. The fact I can still get 70+ fps on this track with a full field in my mod looks promising. I do want to point out 4096x2048 is NOT going to be the preferred or included paint scheme size. 2048x1024 is plenty good in resolution and when looking side by side in-game appear nearly identical in most situations. The reason I am using an overkill carset of 4096x2048 is becasue it is always easier to optimize more aggressively then lower to the recommended paint scheme settings than trying to do it backwards. If I get issues at 4096x2048 and fix it then its is even a better chance performance will be stellar at the recommended 2048x1024 resolution. Because I am in the alpha phase still I don't need everything to be at its final optimal state quite yet but with performance already looking so good I'm quite happy with the results.

Additional shots:

NR2003 2019-12-24 00-39-23-09.jpg

NR2003 2019-12-24 00-40-20-20.jpg

NR2003 2019-12-24 00-39-16-74.jpg

NR2003 2019-12-24 00-41-07-90.jpg


I feel the lods are in a pretty good shape at this point. If you look for it closely at any mod you can see the models pop between the different states but you really don't notice this when racing. But load up any mod and watch the cars in front of you as you get closer or father away and I guarantee you'll see the model shift to a different state. You may not have noticed it before but once you see it you can then understand better what the LODs are pretty much. For my mod, I may go back and tweak LOD11 a bit and add a rectangle for the spoiler so it can still be seen in the distance but overall no parts between the lods really shifts too much to matter greatly, especially if you are focusing on racing and no watching lods switch lol.


With all of the cars just being the same it pretty much feels like I'm racing against 42 versions of myself right now:

Dev_7_005.jpg


So that conduces this section of the mod making process. This stage is very much on the engineering and tech art side of things where it less about being creative in terms of designs and being creative on how to increase performance while maintaining the original shape of the car. LODs are definitely a part in gaming where they are not always noticed but very much needed if a game will be playable. For those following along and making their own mod you can make LODs anyway you want really. Whether in blender or in the max scene that you sue to export the PAS for the script. I prefer to do it in 3ds max 8 even though its a little more annoying with the older tools and programs becasue I don't have to worry about setting anything up again and all the models I copy and manipulate I know are the right size and have the right material assigned to them already. As far as scripting goes as I mentioned before the site The Pits.com in their download file and their forum has the documentation of the code and what it all does/means. The quick run down is make all your lod models for each lod state, then hook it up in the script, and lastly check in-game the LODs are switching right.

The next step after lods is damage. This is where I will take the car and make it so actual visual damage will occur to the model as it crashes into walls and other cars. The next dev post will be all about smashing, crashing, parts/cars flying, and how to make it all work in the code.
 
Development post #8

A lot of information in this post. I'll try my best to not turn it into a saga (it took me over 3 hours to write, had to take a day break before finishing it up too lol). I'd say this part in the process will be the most interesting to many seeing as its damage and its visually spectacular in terms of what the player sees. As cars crash and flip over eachother the car itself is transformed from a pristine body to a crumpled up wreck. The cost of getting working damage for a mod is pretty tedious and to make it more realistic looking requires a lot more coding work as well to hook it all up. One fun fact is the above screenshots from my last dev post actually had working damage in the build. I never showed any cars crashing of course but I was working on damage while typing out the LOD post actually.

The first thing I had to do was take my L1 (Lod 1) body and copy it. I make this copy my new 'damage model'. Before I can make any damage I need to split up the body into more pieces though. Any pieces I want removed after extreme damage or removed by the pit crew these need to be separated from the rest of the body. I've color coded all the separate parts so you can see what it looks like. I also attached the inner shell body to each piece so when they are removed those go with it:

Dev_8_001.jpg

Each piece I had to rename as well to something standard. Every part will need to be referenced in the code several times so it is best to name all the parts something easy to copy and also replace certain keywords for the other damage LODs later on. If you setup clean code and naming conventions it goes a long way when you have to copy/paste multiple lines over and over replacing certain words and dong quick edit to a single piece of the car if a change is made. I do this same practice with my folders and model names when I 3D model in-case I need to pull one out or replace a certain model with an older/newer version.

While not shown, I copied all the interior pieces as well and renamed them to something damage related as well. Since the car will wreck and pieces come off the interior sections like the rear and engine area will be more visible so its important these follow the damaged body and are not clipping through them.

Once I have all my new models separated how I like its time to begin applying damage. There are two ways I know of doing this. One way is to copy again my damage meshes and then mess around with the topology on every model making it look damaged. This way I have a damaged piece and a non-damage piece that are the same exact topology. The other way, how Cosmin did it for his mods is using a lattice modifier and using keyframes between a non-damaged and damaged state of the same mesh between frame 0 and frame 1 on the timeline. If find the lattice approach way easier since its a live modifier I can edit and adjust over time.

To do this I just select my models I wish to be damaged and apply a FFD box modifier in 3ds max to them. I raise the control points up higher so there are a lot more of them as well so you have a cage of points around your model like this:

Dev_8_002.jpg

I'm pretty familiar with lattice effect from when I used to use Maya as my primary 3d application. By moving the control points your mesh pieces will follow them depending on where you push and pull the points. Lattices are a great way to bend, morph, and contort a mesh that would be a lot more difficult to do by manually moving each very by hand. Before I start messing the model up I have to set my keyframe to auto mode and move to frame 1 on the timeline. If I don't then changes will be made to the model on frame 0 and I don't want that. Frame 0 is where the model will retain its original shape and frame 1 is where all the changes to the shape of the meshes will occur. This way I have created a destination between the same mesh. Once I am ready I just move around the model pieces on frame 1 until I have something like this on every part:

Dev_8_003.jpg

I probably made it look simple but it takes some time researching car body damage, being creative in how you want it to look 'crushed', and also double checking no interior parts are clipping through the outer body. I actually ran into a dumb problem as well with 3ds max 8 that wasted nearly a full day where the lattice performance was so slow I couldn't edit much without extreme viewport lag. Since Max 8 is a very old program its not very good using new pc hardware. Thankfully I found the issue and it turned out the viewport renderer had to be set to software mode instead of using direct X 9. I bring this up because many would run into an issue like this and then just say "welp fun while it lasted, guess the program doesn't work, time to give up". You must not do that, look into the program, search for help, look at the tool settings, try different settings, or try alternative tools to get the results you want then import it into the older program version. I had come too far and had the perfect models set up with the lattice ready to edit to just give up and assume there was nothing I could have done about it. I can guarantee in all years of modding some of the biggest roadblocks you hit when making a mod for every game turns out the be the stupidest things that seem impossible to fix but then you find the 'fix' and it is usually some very tiny dumb setting or process and everything becomes unblocked again. I once had a weapon animation issue in Fallout 4 that took me a week to figure out and it turned out to be a single node of the characters hand that I needed to parent to another bone on the skeleton and everything finally worked as expected. All I am trying to say here is if you really care and want to make a mod push through adversity and find a solution or workaround. You'll not only feel great when you get things working but also be more confident and better equipped when the next issue arises and eventually each issue you hit is just going through the motions of mod making.

Back on topic through once I have the damaged state done I ended up either something like this between both frames:

damage_frames.gif

That is all great but this is just the visual representation of what I want the car to look like as it gets damaged for the mod. Now I have to do the code to tell the game this is what each piece will look like. I also have to signify in the code where each piece belongs and as the car is being contacted by walls and other cars the game knows where the car should start taking damage while also not being damaged in the other sections. Next I have to clarify in the code several parts that I want to fall off from extreme damage or to be eventually removed by the pit crew if the damage is bad enough. If that is not enough I then need to redo the work for all of the other damage LODs as well. To top it off for that extra flair and realism I need to add visual damage like scrapes and tire doughnut marks to the sides of the car so it looks like it actually hit something and paint is worn off. That is not all though, throughout this entire process a lot of crash testing is needed in-game to ensure the parts deform as expected but also performance is retained.

To start in the code I need to call each mesh from my scene and define what it is. For this example lets use the hood:

Code:
make0_hood_L1_ud:                     MESH maxCars            make0_hood_L1_d               frame 0

make0_hood_L1_d:                      MESH maxCars            make0_hood_L1_d                frame 1

The first line is my non-damaged hood mesh, as it sits frame 0 in my 3ds max timeline. The second line of code is the damaged mesh which sits on frame 1. The same mesh is used twice (hence why you see it referenced in each line of code). Other than the frame difference between each line I call each line a different name for the same mesh. I used 'ud' at the end of the first line (for me its an abbreviation of 'undamaged'). Then for line 2 I add just 'd' at the end (for damaged). You can name your meshes anything you want, I just made it something simple and easy to understand. I Also added in the name the Lod level which in this case is L1 so when I do the other lods I can easily replace L1 with any other lod level.

Once the meshes are called and I've given them a 'name' the code understands I now have to tell them what this mesh actually is how to be damaged. For that I use a damage morph. The damage morph is a line of code that sets a source mesh (the undamged) to a destination mesh (the damaged one). This way the mesh will transition from undamaged to damaged. Next I need to tell the code this is a hood:

Code:
L1_make0_hood_damaged:   REGION_MORPH make0_hood_L1_ud        Destination       make0_hood_L1_d   Regions       (hood_bbox    hood_damage    8 0)

As you can see in the code above I called this morph L1_make0_hood_damaged for my make 1 body and its at lod level 1. Again, you can name you morphs whatever you want, I highly recommend making them easy to remember and also displaying any vital info (important to you) so you know what you are looking at in the code of your mod so when you see something go wrong in the game you know exactly what line of code in your file might be the culprit. No one else (unless you are on a mod making team) is going to see this code so as long as you know what you are looking at with a quick glance that will suffice. If you can't remember what in your code is "model_660_damage_part_2_section10" because you did poor naming conventions then you are in for a world of hurt and wasting a ton of time. Clean code is just as important as making good models and textures even if no one sees the code.

After I gave it a name you can see the next section as REGION_MORPH make0_hood_L1_ud Destination make0_hood_L1_d using the region morph I first put my undamaged mesh frame and after the destination put my damaged mesh name. This tells the code that the mesh morph will transition from the ud (undamaged) to the d (damaged) mesh. The last part I have to do is clarify the region this mesh belongs to on the car along with its corresponding bounding box. Regions (hood_bbox hood_damage 8 0) Here I say the region used in parenthesis is my hood bounding box (hood_bbox) and it will go with the hood_damage at 8 0. The numbers at the end are hardcoded and cannot be changed. Every section of the car has a different number code, you can find this along with a full damage tutorial over at The Pits.com. The bounding boxes are literally just cubes in my 3ds scene that encompass each section of the car, they define the region of the different car parts.

After this the hood will now technically damage as you ram into other cars or walls fast enough. Also if its not damaged enough the pit crew can repair it. Ever been on pit road with your car and noticed the damaged hood slowly start to mold back to a repaired state? That is the damage morph working in real time right in front of you. The game is pretty much telling the hood to go back to its original state until 'repairs' are complete.

This is not all that is needed for the hood though, we need an extra line of code to now tell it we want this piece (the hood) to not only receive damage but also come off when its gets damaged too much. To do this we need this code next:

Code:
L1_make0_hood_damaged_removed:   STATE_SWITCH VAR hood_removed ( 0 L1_make0_hood_damaged, 0.9 )

Here we create a state switch variable which says to remove the hood section of our damage hood region morph. I gave this line of code the name of L1_make0_hood_damaged_removed while the damage is named L1_make0_hood_damaged without the _removed at the end. So now I have the damage and a removable piece. The 0.9 I believe states when this piece reached .9 damage it will be removable. This number is hardcoded and can't be changed, every removable piece uses 0.9 so its easy to remember. You can make as many (or less) pieces on your mod come off. If for some reason you wanted the entire roof to fall off you could. I kept mine realistic and only made the hood, front, corners, and rear piece fall off. Every other section will just get really damaged but will never come off the car.

After this its just the same process for every single other piece. For my mod there are 18 separate meshes which equals 36 damaged + undamaged versions between the frame 0 and frame 1 just for LOD 1. So much fun coding is ahead. I pretty much clarified what each piece is, where it belongs on the car, is it removable or not and also what bounding box it belongs with. You can use multiple car sections in a region as well to share between a piece. For example on the rear I can have it take damage from the rend_damage region and the chassis_damage if I want. As long as you set up your regions correctly and it looks good in game its up to you. The main thing you want to avoid is like if your car's hood hits a wall but the rear end never touches it and that section just doesn't morph into a damaged state for no reason.

After every single piece is clarified you then need to group them into a LOD 1 group just like I would for the non-damaged LODs:

Code:
L1_make0_DAM:     GROUP (    lf, rf, rr, lr, flaps_roof_lod, shared_hood_flaps_removed, flaps_deck_lod,

                                       L1_make0_hood_damaged,

                                       L1_make0_rear_end_damaged,

                                       L1_make0_decklid_damaged,

                                       L1_make0_front_bumper_damaged,

                                       L1_make0_LF_damaged,

                                       L1_make0_RF_damaged,

                                       L1_make0_LR_damaged,

                                       L1_make0_RR_damaged,

                                       L1_make0_body_damaged,

                                       L1_make0_body_top_damaged,

                                       L1_make0_banner_damaged,

                                       L1_make0_parts_damaged,

                                       L1_make0_engine_damaged,

                                       L1_make0_rollcage_damaged,

                                       L1_make0_chassis_damaged,

                                       L1_make0_windows_damaged,

                                       L1_make0_interior_damaged,

                                       L1_make0_interior_top_damaged,

                                       L1_vis_dmg_left_damaged,

                                       L1_vis_dmg_right_damaged,

                                       L1_vis_dmg_roof_damaged,

                                       L1_vis_dmg_rear_damaged)



               L1_make0_DAM2:     GROUP (    lf, rf, rr, lr, flaps_roof_lod, shared_hood_flaps_removed, flaps_deck_lod,

                                       L1_make0_hood_damaged_removed,

                                       L1_make0_rear_end_damaged_removed,

                                       L1_make0_decklid_damaged,

                                       L1_make0_front_bumper_damaged_removed,

                                       L1_make0_LF_damaged_removed,

                                       L1_make0_RF_damaged_removed,

                                       L1_make0_LR_damaged_removed,

                                       L1_make0_RR_damaged_removed,

                                       L1_make0_body_damaged,

                                       L1_make0_body_top_damaged,

                                       L1_make0_banner_damaged,

                                       L1_make0_parts_damaged,

                                       L1_make0_engine_damaged,

                                       L1_make0_rollcage_damaged,

                                       L1_make0_chassis_damaged,

                                       L1_make0_windows_damaged,

                                       L1_make0_interior_damaged,

                                       L1_make0_interior_top_damaged,

                                       L1_vis_dmg_left_damaged,

                                       L1_vis_dmg_right_damaged,

                                       L1_vis_dmg_roof_damaged,

                                       L1_vis_dmg_rear_damaged_removed)





You will notice I have 2 similar looking LOD groups. The main difference is the bottom one I have replaced the damaged pieces with their 'removed' variable. This will tell the game if any piece is removed then use this LOD group so the piece will no longer appear in the LOD. If this was not done then when you see AI cars have parts removed they wouldn't actually disappear because they are still using a LOD group that contains the visible mesh still. This same process needs to be done for L3, L5, L7 and L9 lods.

///A 'quick' sidestep about LODs for the damaged mod///

As I mentioned previously LODs still need to be made for the damage pieces. My previous dev post I go over LODs, I do a similar thing where I lower the mesh resolution for each damaged lod state. The main difference with the damage meshes is I keep more parts at farther distances since you will see the inner section more due to damage. Also, these lods need the lattice modifier still applied between frame 0 and 1 so they have damage. Its pretty much a ton of copy and pasting making sure each model is named the same thing except for the lod it signifies. Here are all the lods for damage in my 3ds max scene I had to make. Yes, every single piece had to have a unique name, had to be lowered in resolution for each lod and has the lattice modifier applied:



I couldn't even get a screenshot that fits all of the un-collapsed groups, it only went to L5 before getting cut off but you get the point. This is a LOT of work and this is only for make0 of the mod. I hope this one screenshot really shows you the gravity of the situation when it comes to how much is really needed and what those modders went through when making you a mod. Its honestly boring work for the most part. For you though, when making a mod, boring is good. It means you at least know what to do and that is always a far better situation than being stuck not knowing how to making a mod. Anyways lets get back to where we were now that you know LODs are also a crucial step with the damage meshes as well.

///ok back to the code continued///

Last but not least we have to tell the code where this all fits in after we've done every LOD:

Dev_8_004.jpg

Code:
Exterior_make0_DAM:  STATIC_LOD             (    0         L1_make0_DAM,

                                               2.0        L3_make0_DAM,

                                               4.5     L3_make0_DAM,

                                               6.8     L5_make0_DAM,

                                               9.2     L5_make0_DAM,

                                               12.3     L7_make0_DAM,

                                               16.4     L7_make0_DAM,

                                               20.0     L9_make0_DAM,

                                               30.5     L9_make0_DAM,

                                               48.2     Exterior_make0_L11,

                                               70.0    Exterior_make0_L11

                                           )

           Exterior_make0_DAM2:  STATIC_LOD         (    0         L1_make0_DAM2,

                                               2.0        L3_make0_DAM2,

                                               4.5     L3_make0_DAM2,

                                               6.8     L5_make0_DAM2,

                                               9.2     L5_make0_DAM2,

                                               12.3     L7_make0_DAM2,

                                               16.4     L7_make0_DAM2,

                                               20.0     L9_make0_DAM2,

                                               30.5     L9_make0_DAM2,

                                               48.2     Exterior_make0_L11,

                                               70.0    Exterior_make0_L11

                                           )

Again, we have 2 LOD groups because one contains all the LOD states for each lod level with all the damaged parts. The other contains all the damaged parts with the removed damaged pieces. One thing to point out is I didn't need a L11 for damage because the car is so far away you can't see it anyways so I just used my L11 non-damaged LOD again. This saved a bit of time which was nice. After this we now we contain our LOD groups into the damage state switch variable:

Code:
Make0DAM: STATE_SWITCH VAR damaged (0 Exterior_make0, 1 Exterior_make0_DAM, 2 Exterior_make0_DAM2, 2.9)

This switch tells the game the moment your car hits another car or object hard enough to switch from the undamaged meshes to the damaged. Then if pieces will fall off or are removed by your pit crew to switch to the damaged removed LOD group. If you have ever been racing and tapped a wall slightly but just hard enough to incur damage you might have noticed a slight shift in lighting or mesh shape to the car if you were racing on like the hood cam really close to the car. What you just witnessed was this state switch in action telling the game "ok this joker hit the wall, switch his/her car model from the undamaged version to a damaged one". I remember seeing this as far back as Nascar Racing 2 but until making a mod myself never actually understood what the 'magic' was happening under the hood (no pun intended). Game creation is all about magic really. Its making things appear one way or another and having code create those 'effects' pretty much. This above switch I just need one for now but as I make the bodies for make 1, 2, and 3 I will need a state switch and damage for all of them to group into as well.

After this we finally reach the final output for our damage and group it to the state switch that tells this game this is our exterior view models when you use the hotkeys in game to switch to anything other than cockpit view. We used the same thing for the non-damaged model except now that I have damage models contained in this exterior view code as well:

Code:
extViewB:     STATE_SWITCH VAR carMakeIdx (0 Make0DAM, 1 Make0DAM, 2 Make0DAM, 3 Make0DAM, 4)

extView:         GROUP (extViewB)

The numbers signify the different car makes. Because I just have one now I've copied my Make0DAm to 1, 2, 3 and 4 car bodies. If I didn't the if you created a car for the other body types no car would appear in the game. As I get the other car bodies in game they will replace the make0 for the other numbered slots.

Now hold on sunshine, I know what you are thinking: "its time to see that damage in the game!" but not yet. I still have one final thing to do which is create visual damage on the car body so it looks like it has paint scrapes and tire marks. While this isn't required the mod looks so much better and realistic with it and most mods have these included so I'm not about to skip out on that feature. In most people's code from the modders that have shared theirs with me I see they call it 'scrapers'. Scrapers is simply a slight of hand trick where when the mod goes to a damaged state you slip a mesh on the sides, roof, and rear (or wherever else you may want it) to the car. These are just simple mesh planes that will contain a texture that looks like damage. At first these meshes don't appear but as the car gets more damaged and the car body crumples inward more the damaged scrape meshes will appear. Here are the 'scrapers' or as I like to call mine vis_dmg (visual_damage) meshes look like:

Dev_8_005.jpg

As you can see I made one for the sides, roof, and rear of the car. They are just flat plane meshes that I UV unwrapped on a single texture so I can paint the damage effects on them.

Dev_8_006.jpg

To make the textures I just created them from plain layers in affinity photo like I did with most of my textures for this mod. For the paint scratches I painted long paint lines. Then using several filters such as motion blur, displacement, and dust/scratches I gave it that scratched look. For the doughnut marks I made a circle layer and again used several filters to give it that tire mark look. For the extra touch I erased section of it and then duplicated it and rotated it around a bit so there were multiple different looking tire marks. The layer is transparent as well so any sections the scratches and tire marks don't appear you will be able to see the original paint scheme. Without transparency on here is what it looks like applied to the car:

Dev_8_007.jpg

You can see how I have treated my visual damage mesh the same as the car body and applied a lattice to it so it conforms to the shape of the damaged car. This ensures that as the car shape changes from damage the visual damage mesh never appears like its floating away from the car. Also for the rear section since this gets removed I had to also put in the code that this is removable and should go with the rear end when it falls off. If I didn't then you'd see no rear end piece but floating scrapes.

Thankfully I didn't really run into any major errors when compiling the first time. I hit one snag where I accidentally referenced my visual damage mesh for every lod instead of sharing it for all of them but other than that it went smoothly. Now that it is all done and said its finally time to go in the game and see the results what I am sure you've all been waiting for:


NR2003 2019-12-27 19-23-45-99.jpg

NR2003 2019-12-27 19-24-04-53.jpg

NR2003 2019-12-27 19-24-53-00.jpg

NR2003 2019-12-27 19-24-23-29.jpg

NR2003 2019-12-27 19-25-06-42.jpg

NR2003 2019-12-27 19-33-38-74.jpg

NR2003 2019-12-27 19-35-07-51.jpg

NR2003 2019-12-27 19-51-49-88.jpg

NR2003 2019-12-27 19-56-51-74.jpg

NR2003 2019-12-27 19-57-01-52.jpg

This section of the mod was the part where the code really got heavy. Before adding any damage my code for just one non-damaged body and was a little over 1000 lines. Now that I have damage for that same single body the code is 2600+ lines. Once I add the other bodies in its probably going to be anywhere from 8000 to over 10,000 lines. Along with the code getting larger the list of bugs found also increased:

Dev_8_008.jpg

I've fixed everything at this point minus one little cosmetic deal that isn't that important right now. Still lots of issues and all sorts of different type of issues have arisen already in development. Things may look like they are always going smooth from these posts but there is always something to fix even when making the mod in progress. I have no doubt the list of bugs will increase as I add the 3 other makes in.

At this point this pretty much concludes make0 for the exterior, it has all the functional workings needed for a 'complete' car in a mod pretty much. The next step that I've already began is modeling the front noses of the 3 other makes and almost starting over the entire process. I'll save the details of the other 3 car makes for another post. This damage one is already so huge.
 
Here are all 4 makes showing the nose differences. Let me know what you think:

Dev_9_001.jpg

Dev_9_002.jpg

Dev_9_003.jpg

The goal is of course to keep them as generic as possible but still retaining somewhat of a different nose shape when compared to each other. While not completely final I'm feeling pretty good about them I think.
 
Development post #9

It may seem like I was over the hill with the hardest part of the mod once damage was completed for make0 but this next section, getting the 3 other makes in, was actually a lot of work compared. Once I was 'finished' with make0 the next step is to get the 3 other makes into the game. While I thankfully did not have to start completely over from square 0 it was quite a process to inject the others in. This may be different for other mods depending on how different each body type is but for my mod the main change was just the nose section. Even though it was just a different nose type for each make having to stitch it together with the other existing parts was very tricky.

The first thing I did was take my make0 model and create a new blender scene, this way I don't have to worry about messing up the original or anything. This make0 mesh is the completed final mesh that is in the game so it has everything: correct topology, UV placement, and LOD1 detail. Since my plan was to only change the nose section it was important I contained or 'quarantined' the rest of the model so I don't move any verts or accidentally delete a section of it. There are multiple ways you can do this. One way is to hide all the faces you don't want edited. However, since I wanted to see the whole body so I could make sure the nose looks good with the rest of the body and flow well I instead sliced off the front like this temporarily:

Dev_9_004.jpg

The nose section was pretty much all separate meshes. Once I had it ready to edit I made 3 copies (one for each of the other makes) and started editing the nose shape. After editing each nose type before I came to the conclusion that it looked good I brought it into 3D Coat and applied some really quick decals to it. This was just a test to ensure that the nose shape indeed worked for the intended manufacturers I was going with:

Dev_9_005.jpg

After doing quick tests on all the new noses the next thing to do was merge the nose pieces back to the bodies so it was one single body mesh again. Here is a quick run down of the differences of each 4 makes and how they look (note some changes were made since my last post on the noses):

Dev_9_006.jpg

make0:
This is the one you've seen the entire time. It is the template essentially that the other 3 makes were built upon. This nose shape is very neutral in both its curve and shape which will be very friendly to any manufacturer's really that don't have any aggressive nose shape to them. This nose is planned to be used for manufacturers such as Honda (Accord), Chevy (Monte Carlo or Impala), Nissan (Sentra), volkswagen (passat 2020).

make1:
This nose is the most hard edged one and works best for manufacturers that are hard edged and flatter. The only defining edges are the lower section but with proper shading it can be made to look like any variation. This nose shares the same splitter shape as make0. This nose is planned to be used for manufacturers such as Dodge (Charger), BMW (M8), Volvo (S60).

make2:
This nose is best suited for manufacturers that have a more rounded shape to the grill area. A few changes from the previous screenshots compared to now is the round front was moved outward a bit more. The hard edges were also removed. This was done so the hard edges do not define the grill shape but rather any fake shading will do the trick. This nose shape also has a new splitter shape to fit the new curve of this nose too. This nose is planned to be used for manufacturers such as [Infiniti (Black S), Ford (Fusion), Tesla (Model S).

make3:
This nose is the most pointy of them all and also extended out further than the other four. In contrast it also slopes more aggressively than the other 3 too. Compared to my previous screenshots I did a complete remodel of it since I was not quite happy with the first results. The only hard defining edges on this nose are the bumper area to give it a clear divide from the upper and lower grill sections and allow the nose to clearly look more pointy. This nose also like make2 has a new splitter shape to fit the nose too. This is my personal favorite nose as it will be the one to have makes such as Pontiac on it. At long last after years of struggling to fit my Pontiac templates on other mod noses it will be the easiest its ever been with this one. This nose is planned to be used for manufacturers such as Pontiac (G8), Mitsubishi (Lancer/Galant), Toyota (Camry).

As shown in my quick test screenshot above with minimal effort regardless of the nose shape chosen if the user wants to make a custom manufacturer it will be very easy to do so. No more fighting over hard geometry to fake it. Now you'll be able to apply decals with ease and create that fake shading and highlights to really give it whatever shape you want it to appear as while the underlying geometry of the nose helps give that impression. One last thing I want to mention is I decided to forgo doing a custom bumper design for each one. I like the default lip I had on it already and with proper decals and fake shading/highlights the user will be able to make the bumper appear different.

Now that I've established the nose shapes and the results this is where the real time consuming and tedious part begins. Since each body has to have its own UV template that can be painted on the goal was to make sure the UV for all 4 makes did not change even a pixel except for the nose and hood areas as those were the only sections that have UV's moved around and would need to be generated again to ensure painting on the mesh would be proper.

Along with the UV's matching for each template (minus hood and nose variations) I had to recreate the ambient occlusion, shading, and highlights for the nose/hood sections while also erasing the make0 details so they would not overlap. This includes the new wireframe and mask layers for each make as well. To do this multi-step process took a lot of focus, it pretty much feels like doing digital surgery. I always find it easier to create something from nothing but when I have to carefully extract, edit, and replace only certain features of a model or texture it can be very time consuming. It will be different how everyone does something like this but for me and the tools I used here is the quick rundown (this was done for each of the 3 new makes so had to do this process 3 times in a row):
  • take the newly edited body for make and import into 3D Coat, rebuild the UV's for the hood and nose.
  • import the fixed uv make model to my master 3d coat file where all the other model pieces are and align the new nose and hood UV shells to a very similar area that make0 body uses
  • export just the body for the new make in a 3d coat scene and generate/paint shading, highlights, and ambient occlusion
  • using the 3d coat exporter, export the layers and wireframe to a new affinity photo file
  • in affinity photo edit all the new layers trimming and editing it so just the hood and nose sections are left
  • make a copy of my working paint template from make0 for my new make and inject the new shading, highlights, and ambient occlusion
  • stitch together all the layers while removing the hood and nose of make0
  • export the new template to be ready to be used on the new make
  • back in 3D Coat export my final make body to blender
  • in blender cleanup the smoothing groups/hard edges
  • export this file to 3DS Max 8 where my main scene of the mod resides
  • cleanup the model and apply the paintjob material with the new make texture I created
Once I had completed that multi-step part the new make is in my main 3DS Max scene ready to be worked on for the non-damaged body. This part was pretty much just redoing the same process I have already posted on before. The one main difference was I didn't have to start completely over. Elements like the interior, wheels, working flaps, etc are already done and those are all shared between each make. The only part I had to redo was the exterior body meshes and generate new LODs for each other them. Even this process was faster since I had already validated make0's LODs and what settings I used on the MultiRes modifier. So after a ton of copying and applying all the lods I finally had all 4 makes finished in my 3ds max scene for the non-damaged state:

Dev_9_007.jpg

These are all the folders in my outliner, if I opened them up you'd see hundreds of models for each make and their lods states. As you can see by the image though I've neatly organized them into categories and each model name has been purposefully labeled and named a specific way by what the objects is (hood, rear, body etc) and what lod level it is at (L1, L3, L5, etc). I even grouped all of the SHARED objects per their lod state. These SHARED objects are all of the interior pieces that do not differ between any of the makes. This makes it very easy for me in the code to do fast and easy name replacements. Its up to you when making a mod how you organize and name stuff but you really save a massive amount of time when its organized and you don't have to remember each name in the code manually.

Once the 3ds scene for non-damage on all 4 makes was completed I exported my scene as a PAS file and prepped my code to inject the 3 other makes for their non-damage states, This part was comically easy becasue like I mentioned I had everything so easily named doing a quick find and replace in my atom text editor meant I could copy my make0's non-damage code, copy it, name it to make1 and paste it into my main code. None of the makes have more or less pieces than each other so they all match in terms of models used per lod level and what the names are. That is the one nice thing about building a stock car mod. Its not like one body will have an extra spoiler or a different window so I can easily reference the objects to a different make by a simple name change in the code. There really isn't much to show/explain code wise becasue its just the same code from my make0 non-damage except its copied 3 extra times and renamed between make0, 1 , 2 and 3 for the different bodies. So for example if I take an excerpt of the LOD1 for make 0:

Code:
        ############
        #LOD L1    #
        ############

        L1_body0:                         MESH maxCars make0_body_L1
        L1_body0_shell:              MESH maxCars make0_inner_shell_L1
        L1_hood0:                         MESH maxcars make0_hood_L1
        L1_hood0_under:            MESH maxcars make0_under_hood_L1
        L1_rear0:                           MESH maxcars make0_rear_L1
        L1_splitter0:                     MESH maxcars make0_splitter_L1

I can just as easily do a find and replace to make it work for my make1 body now:

Code:
        ############
        #LOD L1    #
        ############

        L1_body1:                         MESH maxCars make1_body_L1
        L1_body1_shell:              MESH maxCars make1_inner_shell_L1
        L1_hood1:                         MESH maxcars make1_hood_L1
        L1_hood1_under:            MESH maxcars make1_under_hood_L1
        L1_rear1:                           MESH maxcars make1_rear_L1
        L1_splitter1:                     MESH maxcars make1_splitter_L1

I couldn't do this if I had all sort of different names for the different parts. For example if one was named Chevy_hood and another Cvy_rear it would take a lot more work to find and replace all that code and there are a ton of lines and room for error increases. That is why I went with very generic stuff like make0 and numbers since I knew it would easier and faster to replace.

Once I had all of the makes copied in the code it was time to compile and I'm happy to say on the first try it compiled perfectly with zero errors. The last thing to do was see all 4 makes in the game:

NR2003 2020-01-01 03-29-18-49.jpg

NR2003 2020-01-01 03-30-18-46.jpg

NR2003 2020-01-01 03-33-09-87.jpg

NR2003 2020-01-01 03-31-57-60.jpg

Admittedly it might be hard to tell from the screenshots due to the distance and body shine the nose shapes but I assure you with the custom manufacturer decals and shading for them it will really show the differences better. For a better demonstration here is a quick gif showing all 4 WIP make templates:

makes_gif.gif

You can see how the nose and hood areas shift but the rest of the template stays perfectly static. This is going to allow painters to do much easier paint transfers between makes. The only areas of re-adjustment would need to be the nose and slight hood re-work. It took a long time to achieve this careful accuracy but it will be worth it when this mod gets into the hands of painters. One last comparison the 3d render of all 4 makes with their textures, this will really show you the changes between them if still not convinced:

makes1_gif.gif

At this point the mod includes all 4 makes with no damage and one make with full working damage. The next step is to now copy and break down the 3 new makes for damage and apply the damage morphs to it. It will no doubt but quite the process but after the next large step the mod will finally be in beta phase.
 
Development post #10

Well already at the 10th update post and I still have a few days left before I go back to work from the holidays. I got a lot farther than I expected in December. To recap quickly: The development of this mod started roughly mid November where the rest of the month was spent modeling the make0 body and entire interior section. By early December I had the first non-damaged body working in game with basic textures. Fast forward to the end of the month all 4 non-damaged versions of the makes and all 4 damaged versions of the bodies are now included. Essentially the exterior view of all 4 makes is now 'done' both modeling and code wise. There are still many things to work on so release is still far away and I'll cover the future roadmap in a bit. Before that though I'll cover what has happened since the last update.

After I got the 3 other makes in their non-damaged version into the game the next focus was giving them damage. So just as I did with make0 I had to do the same process to create damage for the 3 other makes. I won't repeat myself since it was a similar process in doing damage. The main change was the magnitude of work was 3 times the amount now and also the room for error goes way up. It may seem like just easy copy/pasting and renaming model files for all the various damage lods and pieces but with so many pieces if you don't stay focused it gets pretty overwhelming. To put into perspective just how many pieces I had to do for all 4 makes when it comes to damage here are all the folders for each make and their respective LOD levels:

Dev_10_001.jpg

This is all the folders collapsed too. Inside each one is a good 10+ models for interior and exterior of each make labeled per lod. Every piece had to be named correctly and also the damage morph lattice had to be properly created/copied as well. It can get really confusing working with so many lod level on each make so to make it easier I did one make at a time focusing on LOD1 first then doing the rest of its lods. Once I had the damage lods done for one make I added the damage code for that make to my main code and compiled it. This way I verified everything code wise was correct and in-game damage for that particular make was looking good. Then I moved on the the remaining ones and repeated the same process.

Now if I wanted too I could have used the same exact damage lattice I had made for make0 but I've gotten so far it would be a shame to have each make when damaged exhibit the same exact visual 'damage'. So I make a unique damage look for each one. This will give a bit more variation when a pile of cars get damaged and make it just that more realistic looking so not everything looks so carbon copy in a wreck occurring. Here is what all 4 makes look when damaged at 100% with my little modifier in 3ds max:

17a = make0
77a = make1
7a = make2
07a = make3

dmg_compare.gif

With each make and injecting the damage code into my main code file to compile it was adding hundreds and hundreds of lines. Thankfully I did all the work really with make0 already. Like I mentioned in previous posts becasue I had strict naming conventions for all my model names and the names I defined them in the code doing a simple find and replace query allowed me to create all new code for damage on make1, make2, and make3 pretty effortlessly. I had a few silly errors as a result to me not naming certain models in my 3ds max scene correctly but as far as the code went it compiled perfectly. There currently 7977 lines of codes for the mod now and it takes the make3do program to compile it a few seconds of waiting compared to being instantly done now. Of course the last thing to do was stick all 4 makes together in a 'carset' and cause some wrecks to see all the damage in a demo:


NR2003 2020-01-04 02-36-25-05.jpg

NR2003 2020-01-04 02-36-11-63.jpg

NR2003 2020-01-04 02-36-51-92.jpg

NR2003 2020-01-04 02-37-13-71.jpg

NR2003 2020-01-04 02-37-38-80.jpg

NR2003 2020-01-04 02-37-28-67.jpg

NR2003 2020-01-04 02-37-47-46.jpg

NR2003 2020-01-04 02-38-08-47.jpg

NR2003 2020-01-04 02-39-15-14.jpg

NR2003 2020-01-04 02-39-27-05.jpg

NR2003 2020-01-04 02-39-47-06.jpg


You might have noticed from the title of the video or the text in it the mod it is now labeled as 'beta' and this is correct. With a 4 makes in the build and they all have their 4 damage models with all LODS the mod is in a state it can begin initial testing for performance/stability. I still have a few things to clean up but I am feeling pretty good about getting some others in to test it out and see if they find any problems. I've tried to be pretty rigorous in testing already and aggressive with performance friendly lods so I think if anyone can run intensive mods like DMR or the new MENCS mod then they should be on par with using this one. You may not be able to notice without me telling you but for the above video and screenshots I compressed the paint schemes down from the overkill 4096x2048 to the recommended 2048x1024 template size. I actually managed to when I had all 4 makes in the build to make my NR2003 crash on my Armory track, once I put the schemes to no longer being 5mb overkill files and down to 1.5 to 900kb files the crashing no longer occurs. Surprisingly at other tracks that were intensive even with the overkill settings I couldn't get it to crash on a race start so I'd say that is a good win considering now with the 2048x1024 size stability is solid on any track from what I've tried.

Now onto the beta itself, I'll be ready to start taking in a few helping hands but it will probably start out quite small (maybe 2-4). Along with this I won't be just letting anyone in, I want tried and true community members that I know I can trust (and I know). I don't want just people who want to 'test' to get a joyride for a few minuets than call it a day. I'd like individuals who are both interested in the mod but also have a proven track record of knowledge with NR2003. I will have a more detailed post in a week or so specifically on who I'll be looking for and what I'm looking for test wise. For now I still need to find a central place where we can meet (discord or a forum I create) and I need to make sure I have a ready to go beta build of the mod in a good beta state to test out.

These betas will be closed so you won't be seeing a few 'lucky' users racing, posting screenshots, and talking about their race 5 season 1 five wide last lap pass with the ICR mod or anything. It will still just be me relaying the data within my dev posts as they come. The goal isn't to give the mod to a few so they can get a head start on painting or starting their series seasons, it will fundamental testing to make sure the mod is good and on par with what everyone would expect from any other mod. I don't think I can make a 'perfect' mod and I know there might be some issues but I can try to clean up as much as I can so it works the best on most people's pc's with the least issues both performance and visually. To accomplish this I need the enthusiastic few who can verify all is good before the masses get it for release.

With all that said, while the beta has begun the mod still has a lot things to be accomplished before it gets anywhere near an official release:
  • Driver - need to create the exterior driver model with their lods and add them to the templates for each make
  • Interior model - the cockpit is still using default NR2003 cup model, I still need to create the interior models, textures, and set it up in the code
  • Rear-view mirror model - the rear view model of the car that appears in the mirror for the player is still using default, I need to create this rear-view scene along with adding it into the code
  • Templates - The templates are still in an alpha phase with messy/uncompressed layers. I also need to add the specific shading/decals for all the manufacturers along with contingency sets and extra body details I've not added yet.
  • Renders - Render scenes/getting someone competent in 3ds max to make max render scenes the public can use to make. I also need to try and see if I can get a working carviewer file so painters have a way to preview their work as they paint,or at least an alternative method compared to carviewer.
All of the above will probably take several more weeks of work and possibly months so there is still a ton to do. Also this next week I go back to my regular day job so things will slow down again and I probably will have dev posts out at a slower pace too.
 
How is this for the driver model? Tried to make them fit the seat and car so they don't look too gigantic but are not super small either.

Dev_11_001.jpg

Dev_11_002.jpg

Dev_11_003.jpg

Its still missing things like the helmet hose and some seat-belt mesh but I feel I have the basic driver mesh.
 
Development post #11

For this update its all about the driver model. The driver itself has zero impact on the model gameplay wise, it is merely a mesh for visual representation. With that said it is still nice for the immersion and detail to have a driver model, especially if the user want to paint on the suit to match their car as well. The one main difference with the driver mesh compared to any other is it can be animated manually so the model needs to be prepared for it. The arms and hand need to be separated from the body so when its animated they can move as separate parts. Keeping that in mind I modeled a simple driver with the helmet hose and belts. The model fits nicely into the interior seat of the car and his hands line up where the steering wheel goes:

Dev_11_004.jpg

After the driver is modeled its the same process as always with every model: unwrap, texture, and import into 3ds. For the textures they were created from scratch except for the simpson and alpinestars logos. Honestly I was most worried about texturing the driver becasue unlike the car the driver is more organic and with the suit it requires a bit more subtle detail to make the suit look like fabric and not concrete or medal. To achieve this I did tricks like using a fabric textures and some lines to create the seam look. Taking something like a picture of crumpled paper for example that gives the illusion of wrinkled cloth could work as well. Just as long as the texture is white and black it works great using the multiply overlay. Once I did the rest of the outlines and shading, and visor helmet detail this was the final result for all the paintable driver pieces on the template. I put all the driver pieces in the top right corner where I purposefully left room:

Dev_11_005.jpg

For the other pieces like the belt, steering wheel, and hose I placed those on extra space of the engine texture the user will never edit:

Dev_11_005-1.jpg

As I mentioned everything but the logos was scratch made, I had a lot of fun making the steering wheel. Maybe one day in a tutorial I will show in a video how I start with basic layers and get detailed designs. For the wheel I just created a doughnut, then added in a circle surrounded by 3 trapezoid shaped layers. After that it was just a matter of adding shading and putting in some holes to the wheel braces to give it that final look.For those unaware of how NR handles textures the pink around the wheel is cancelled out in winmip2 to create transparency. After all the texture work here is the final result, I think the driver turned out pretty well:

Dev_11_006.png

Of course the driver can be painted so here I changed the base color, as you can see the driver suit still has the cloth like texture and seams, using blending modes allows me to create this illusion even if the base color is adjusted:

Dev_11_007.png

I think the only thing I will tweak at this point is making the helmet a bit shiny but other than that I am happy with the final results. Once the textures and model are done its time to import it into my 3ds max scene and prepare it for animation. With the driver I could just have a static guy but for my mod I wanted that extra detail of the driver rotating the wheel and having their head turning as the car is turning. To achieve this I needed to link all the body pieces together. Just like bones I link the hand to the forearm, and the arm to the shoulder and so on. Once linked I create what is called an IK (inverse kinematics) solver. Even though this is my first time 'animating' in NR2003 I am actually quite familiar with IK's. In my early days of using Alias Maya I did a lot of animations then when I started making Fallout 4 mods I had to do a lot of IK animations for my mods. The animation I am making for the driver is super simple and easy. The IK creates a handle point that allows you to move the meshes within the IK to follow eachother just like bones would. With this I can create the animation using keyframes. Keyframes are points in a timeline that will tell the program to move (animate) whatever has been moved between each point and interpolate the movement. For NR2003 the driver only needs 20 frames. At frame 0 I animate the driver turning the wheel all the way to the left. At frame 10 the wheel is center. and frame 20 it is all the way to the right. Once the animation is done I have a completed driver. For optimization I create LODs for the driver and then add them into the code.

For the code its actually quite simple:

Code:
############
#LOD L1    #
############

        driver:    MESH_GROUP "driver_main.pas"     LINK    RENAME_MAT     (paintjob paintjob)

        driver_main:    LINKED_MESH driver driver_body

        L1_driver:         STATE_SWITCH VAR animate_driver (0.0 driver_main, 1.0 driver_main, 2.0)

As you can see for LOD 1 its just 3 lines. The first line tells the code to find my driver scene and group the meshes all together. The second line I declare this mesh as the 'driver' and link it. The last line I just tell the game to run the animation I have created. After that I have a fully working driver. In the video below I first show the animation I made in 3ds max and what the IK handles look like when properly attached to a mesh. Next you see the driver in-game moving where I then purposefully crash into a wall to show even when the damage meshes engage I have grouped the driver as part of the damage LODs as well so they will always appear:


Now that the driver is complete its finally time to tackle the interior scenes. This means rebuilding the interior pretty much in higher detail than my exterior version. Also I will have some beta news coming in the next few days I hope.
 
Development post #12

With the majority of the exterior of the car complete it was time to move onto the interior. In NR2003 (and most racing games I believe) the interior cockpit is treated as a totally different asset. When you click the 'drive' button in NR2003 and switch between camera views the cockpit view you see is an entirely different scene from the exterior. While you could essentially 'reuse' your meshes and textures from the exterior view as a cockpit you'd notice pretty soon being that close to the model in cockpit view is very low resolution. The exterior models were not made to be viewed by literal feet away, to fix this new models in higher resolution and better texture detail is needed.

While its possible to create a mod starting in cockpit view I decided to leave this part of the mod to work on after I completed the exterior. This way I could use the exterior cockpit I made as a guide to recreate the higher resolution one. Since I know the basic cockpit I modeled for the exterior already fits the car its a perfect template to use. So taking my exterior cockpit model I basically replaced all of the model pieces with higher resolution ones. Another thing was I only needed to focus on the front section of the cockpit because in NR2003 you can never turn left or right far enough to see the back section. Essentially you are almost modeling a simulator in a way where just the front section is visible:

Screenshot_2.jpg

Screenshot_3.jpg

After I remodeled the big sections of the cockpit like the dashboard, rollbar, and windows I added in more placeholder objects to get a feel for the look of the cockpit. Before finalizing the total design I did a quick unwrap and applied a checkerboard to all the models so I had a placeholder present which allowed me to go into the game with a very basic cockpit and get a feel for where I needed everything to be placed in relation to the camera. The main challenge with the cockpit is the camera needs to be visible of course to see clear racing but also the gauges/telemetry on the dashboard needs to be visible as well. To achieve this I went in and out of the game adjusting certain pieces and the head height of the camera to get the desired result:

NR2003 2020-01-12 17-47-53-94.jpg

NR2003 2020-01-12 17-49-49-18.jpg

NR2003 2020-01-12 17-49-51-39.jpg

Once I was pretty satisfied with the camera angle and how all the models were in view it was just a matter of finalizing the models, adding in the extra details like buttons, and windows braces. I wanted a unique design and I did take some inspiration from the iracing Nascar cockpit and other forms of racing that have more sophisticated features on their dash. The easy party is doing the static models and textures really of the cockpit. The harder part is making sure the real telemetry gauges not only work design wise but are placed in the correct spots too. This is what makes the cockpit a challenge. Unlike the exterior where you deal with LODs the cockpit is simply always in LOD1 but with that payoff comes all the literal moving parts. The parts in the cockpit that move/interact is the steering wheel, shifter, mirror, hood damage, and gauges.

The first thing I tackled was the gauges. A gauge in NR2003 is simply a needle mesh rotating around. To make it appear like a gauge you need a background mesh textured as a gauge then in the code you have to define the needle to a specific gauge and location of your cockpit. In NR2003 you have several: Tach (Your rpm), water temp, water pressure, oil temp, oil pressure, fuel, and volts. Depending on the car you are making you can have as many or as few of these as you want. If you notice in some mods they only have 5-6 while others have a tach and 6 gauges (like the BR15 mod). How you order them, how many your want on your dash, and where exactly they go is all customizable. The key part though is they need to be visible to the player or there is really no point in having them if the steering wheel covers it all up. Several of these gauges also include a bonus feature of the warning light where they will change color when they are going past their limit. For example when you over-rev your engine and in most mod the red light on the tach comes on that is the light. Lastly depending on the type of gauges you make you may have different appearances for them between day and night racing.

For my mod instead of doing analog gauges I wanted a fully digital dash. With that in mind I wanted the tach especially to be a bar instead of a circle as well. The DW12 mod has a similar feature and I did something like that for mine. Pretty much I used a flat plane mesh , cutout the shape of the bar and the 'needle' mesh will rotate through the bar as I increase speed and shift gears in the car. Here is my proof of concept in blender:

View: https://youtu.be/aiOHj_frmDM


Then here is what the proof of concept looks like in-game once I coded it:

View: https://youtu.be/YV3ltrri4-I


You will also notice all those orange needles floating around. Those were still using the default cup mod placement positions and I had not touched them yet. Literally everything in the cockpit scene is just visible info for the player and the game won't explode if you remove a gauge or is just not looking correct. If you want a good looking cockpit though you will have to take the extra time to add in the detail to get it looking right though.

After I had the main tach bar finished I simply created several octagon mesh planes for the rest of the gauges which I would then texture a circular gauge design on. The needle would then design to look like it follows the rim of the gauge circle instead of just being a traditional triangle needle shape. Here is what what one of the gauges looks like when it has the proper texture is applied to the mesh:

gauge.jpg

For the code of a gauge its probably the most 'complex' part of the interior scene. For a single gauge such as the fuel this is what it looks like:


Code:
needle_fuel_level: TRANSFORM NAME pfuel POS(0.253, 0.502, 0.382) ROT(0,0,0) Small_Needle_Digital
            gauge_fuel:        MESH maInt        g3
            gauge_fuel_digital:    SELFLIGHTING AMBIENT(1, 1, 1)   gauge_fuel

            gauge_fuel_red:        MESH maInt        g3r
            gauge_fuel_red_digital:    SELFLIGHTING AMBIENT(1, 1, 1)   gauge_fuel_red

            gauge_fuel_light: STATE_SWITCH VAR fuelPressureLightEnable (0 gauge_fuel_digital, 1 gauge_fuel_red_digital, 2)

Basically to break it down I tell the game where my gauge background and needle meshes are. Then I have to tell it where the needle position should be so it lines up with my background gauge texture. Once that is done I want these gauges (as they are digital) to always self light. What this means is regardless if its dark or bright inside the cockpit these meshes will always be a certain brightness. Since these are digital I set them to 1. After that I create the state switch that will tell the game when the warning light for fuel comes on switch to my red texture. One last thing I want to point out is since I am doing digital I don't need a day to night switch but if you are doing a regular physical gauge design you'd probably have a day and night version so when you race at night the gauges will look darker. This is just the code for one gauge, I wouldn't have time to cover all the code for the entire cockpit in this post but if/when I do a tutorial in the future I'd do a larger review of it all for easier understanding.

Once the gauges were complete I moved to the mirror. The mirror is simply a mesh along with a plane mesh in front of it which you define as a 'portal'. This portal tells the game to render it as a literal mirror. You can make the portal any shape you want and place it anywhere in the cockpit. For mine I wanted a stylized design and this was my end result of the shape:

mirror.jpg

After the mirror was completed the steering wheel and shifter had to be modeled. These objects are simply static meshes that you then define in the code to be a wheel or shifter. After carefully placing them in the correct spot of my cockpit they will look like a natural wheel and shifter as you speed up and turn. Since these models are very close to the player the poly count is much higher such as the steering wheel:

wheel.jpg

Last but not least when you take hood damage I wanted the hood damage to be visible. Since I already did the work on the exterior hood I took the code from that and placed it into my cockpit scene. This way when the hood takes any damage it will crumple up as you get hit. The hood section also includes the hood flaps so if you go for a wild ride you will see those deploy in cockpit view as well.

After all of that is completed the final textures were worked on which took quite a bit of work detailing every piece and making it look realistic enough in terms of NR2003 cockpit detail can go. I went the extra mile and added subtle window reflection, dashboard detail, and a paintable nameplate the user will be able to customize on the template. Here are a few laps with the new cockpit around armory digital displaying the digital dash:

View: https://youtu.be/aQpfu3DPWkE

NR2003 2020-02-03 18-07-26-43.jpg

NR2003 2020-02-03 18-07-29-52.jpg

NR2003 2020-02-03 18-07-32-54.jpg

NR2003 2020-02-03 18-08-28-17.jpg

NR2003 2020-02-03 18-46-11-14.jpg



For extra perspective here is using camhack to get a outside look around it, you can see hood is on the front of the car and once you take damage it'll pop up into view:

cockpit_outside.jpg

cockpit_outside_1.jpg

As with all things in this thread its not completely final but pretty close so things are subject to be tweaked but overall I am happy with the cockpit design. Before I head out I want to touch on behind the scenes with the test team. They've been diligently testing the mod in-game and also the painters testing out the template giving feedback. Here are just a few screenshots of some of the paint tests they've done:

2xC7csd.png

IVhNZ6L.png

vk2dx68.png

OE2mUZl.png

Currently we are only focusing on make0 template and once I finalize the template more I will start unlocking the other makes for paint testing. On the flipside, the guys who are in-game testing the mod have been doing a great job too. Lots of minor bugs been found but happy to report stability has been very good and even Cosmin gave his seal of approval so when this thing comes out you should expect similar results performance wise I hope when it goes public.

It may seem like the mod at this point is complete but not yet. There is still the rearview mirror model (when you press the n key) to create, the exterior gauges, and a lot of template cleanup and work left. The next dev post will focus on the rearview model and exterior gauges.
 
Development post #13

While the overall car mod itself is completed by now the small features and details left over were still needed to be done. The first of these is the rear view model scene. This is the scene that appears in your rear view mirror when you press the 'n' key. To make this is quite simple since you can reuse your car mod parts to create it. The rear view looks backwards at your model to give the illusion in the mirror it is reflecting what is behind it. To do this I simply copied all my car parts in a new scene that I knew would appear in the rearview and delete all the unnecessary pieces that couldn't be shown so I ended up with something like this:

rhwbK5j.png

Included in this is also the damage code for the decklid and spoiler so if you take rear damage you will see the effects n the rearview correctly. Depending on where this rearview model is placed in your scene you can make it appear closer or farther away in the mirror. Since I had everything already lined up I didn't really need to adjust it much. In the game this is what it looks like when toggled on:

NR2003 2020-02-04 19-28-51-19.jpg

NR2003 2020-02-04 19-28-59-03.jpg

Now of course the challenge with the tall spoiler on my mod is of course with this model toggled on it will make it harder to see cars from behind or on the side. To give an extra option I am including an optional version with an included side mirror:

NR2003 2020-02-08 23-05-22-85.jpg

NR2003 2020-02-08 23-05-56-47.jpg

You will notice the rearview model looks different with a side mirror and that is becasue with the way NR2003 handles mirror portals. It takes into effect the entire bounding box 'region' of where it must 'reflect' and as a result stuff zooms in more. If you look at various other mods with and without a side mirror you can see this same thing. One way to 'fix' it is move the rearview model much farther back in the 3d scene before exporting but since I am offering 2 versions (one with and one without a side mirror) I can't move it back or the non-side mirror version will be way too far away. It would end up being more work than its worth having to create 2 different scenes with different code for it. It will not completely make it easier with the rear model enabled but give the player at least some choice to have a different mirror view they may like more.

Next up was the part that delayed this dev post by a whole week: The outer gauges and outer custom mirror. The challenge with this part of the mod was not setting up my scene or getting it to appear in game as expected but a bug that caused an unintended side effect I didn't see happen with other mods. Before I get to that I will go over the process how the outer gauges are done. The file that dictates this part of a mod is called make_a_light_cockpit.3do. In this output file and code it holds the mirror and gauges for any of the exterior views of a mod.

This part of a mod I'd say was the most unknown and secretive. Not even the rockstar files contain any example code files (or 3ds max scenes) for how to do this stuff so I give big credit to Cosmin sharing his code that I reworked for my mod with its custom models and placements. To make a scene for proper outer content I took my interior cockpit gauges and mirror frame and placed them in the scene like so:

fvWnwTo.png

The middle (0, 0, 0) axis in their scene is pretty much the front dead center of where your in game racing view will be so you have to move around and place the models farther back. Moving a model closer or farther away from the 0 center coordinates will enlarger or shrink the size of the model. I also had to create a new RPM tach becasue as you know my interior view has the custom digital version. You can literally move your parts around any way you want. If for some bizzare reason you wanted all the gauges to be stacked vertically on the left side of the screen you could. I went for a more simple and traditional horizontal lineup but it is really left up to the modder in what order or placement these go. The only important thing rally is will the gauges be readable and not cover up a ton of the car model where they are placed.

As for the code itself it shares similarities with the interior cockpit but also uses different names for the gauges to define them as the 'exterior' versions. There is also special code that allows you to group the mirror and gauges as separate entities which then defines when you press the 'g' (gauge toggle key) or 'm' (mirror toggle key) what turns off with what. This is where I ran into an issue, some reason my mirror and gauge would toggle off correct but when going into replay mode my mirror would still be appearing which as we all know is not good and other mods don't do that. After many hours and days trying to figure out what was wrong I consulted SmokeOR for help. I was finally able to figure out what was wrong and it ended up being a single line of code that was different in the mirror which essentially was not telling it to hide itself pretty much when not in a racing view. I never would have been able to figure this out since I couldn't find any existing code examples so big thanks for him looking over my code and suggesting I try the other thing. Like I mentioned before I would like to after this mod is done to make a tutorial series on mod creation and stuff like this is code I would definitely go over in detail so others know how it can be done correctly. With that annoying issue out of the way though the mod now had custom gauges and mirror shape:

NR2003 2020-02-22 21-44-45-09.jpg

NR2003 2020-02-22 21-44-55-89.jpg

NR2003 2020-02-22 21-44-59-69.jpg

The gauges can be turned off separate like any other mod, also included will be an optional file the player can use that moves the mirror to the top of the screen. You will notice in my screenshots above the mirror is not being covered up by my UIE 2013 content. This is becasue I of course wanted to make my mod compatible with my UI mod and no longer having to use camhack to move the mirror is really great since I can control mirror placement ultimately for once. If I had the code and knew how to adjust the mirror for real with other mods this is what I wanted to so several years ago when I first released UIE 2013.

Now that the outer gauges are done the next little feature to add was backfire to the sideskirt on the right side of the car. You can have backfire anywhere on the car really but I just wanted something simple. Backfire is simply a model mesh that appears briefly for a few frames than disappears. The first thing I did was model several mesh planes together so regardless of the angle the fire output was being view from it would appear '3d'. This is similar to how 3do trees on a race track are done. After unwrapping the simple model I then had to create a fire texture:

sb9FUJF.png

I could have probably found/used a fire effect somewhere but made it from scratch in affinity photo. I started with a literal triangle shape and blurred it, added noise, brought up the brightness and glow levels along with some extra filter distortions to create it. After the texture was done I combined it all in my 3d scene and it looks like this:

mv74maz.png

In game the transparency of the fire and specular levels are correct and you get a result like this:

jQWTEVk.jpg

With those 3 new elements add to the mod its now a 'complete' mod. At this point is has everything a mod would included:
- Exterior models
- Exterior damage models
- Working Flap deployment
- Animated driver
- Interior Model
- Rearview mirror model
- Out Gauges/Mirror toggle
- Backfire effect

The only thing left to do now is heavy focus on the texture work for the actual paintable template of the model. This includes adding more parts details to it, making the specific manufacturer decals/details, and finalizing the templates for a releasable version that painters would be used to seeing. A significant amount of work was done on the template this last week. To show more of the detail I'm using blue and white on the car so the parts can be easier to see but this is the current detail so far:

screenshot000.png

screenshot001.png

screenshot002.png

screenshot003.png

screenshot004.png

With this stage in the mod I will have one more dev post most likely. The last one will show the mod with a few of the manufacturers on it along with a preview of what a completely painted car will look like which will really give you a better sense of how the mod looks in a completed state. Work on the actual mod itself is pretty much done now unless any big bugs appear but there is still quite a lot or work left to do which I will detail all of that in the next and most likely final update.
 

Attachments

  • NR2003 2020-02-06 20-12-28-49.jpg
    NR2003 2020-02-06 20-12-28-49.jpg
    289.2 KB · Views: 1
Development post #14

The time has finally arrived for the final dev post of this mod creation saga. If you've been reading along all these months you will have probably figured out by now the mod for the most part looks completed and that would be correct. The main piece of the puzzle still missing, despite the mod in the game being completed, was the visual side of things: the manufacturer templates. A mod looks fine and all but without proper looking manufacturer templates that represent a certain car manufacturer with its representative parts, sponsor decals, and their little details the 'realism' of the stock car can be lost if you just have a plain grey 'test car' riding around.

In this final post you'll finally see how this complicated road in mod creation leads to probably the most familiar part of a mod: the paint/manufacturer template. This is the final version of a template the end-user would essentially see and use to import into NR2003 to apply their custom paints to the game. To get here though requires an immense amount of detail and use of layers to give the illusion of all those decals, parts, shading, highlights, and other miscellaneous pieces that create a stock car design. Similar to how I showed the process on an isolated part of the mod in the past (creating the tire texture) today I will be going over how I apply/create manufacturer decals and a few of the other elements to create a completed looking template. For this demonstration I will be revealing the first manufacturer included in this mod: The Chevrolet Monte Carlo SS. As this is a fictional mod it would only make sense to bring back some of my old favorite manufacturers and give them a modern look in the process.

Where we last left off there was an essentially a blank template:

1665530238969.png

Now its not completely 'blank' by true terms of course. If you've followed along in previous posts you will know that other details on the template were made such as bolts, the body shading/highlights, small details etc. Today though, we are essentially going to finalize this template and give it an identity. One feature this mod offers that others usually don't on launch are blank templates like this one. The user will either have the choice with this mod to start painting on manufacturers already created or start from scratch (as I am with this demonstration) to create whatever manufacturer they want.

To start in making a manufacturer there are two ways you can go about it: Gather all the pieces from high resolution photo/images on the web or create the parts from scratch. I usually do a hybrid of this. The main part I tend to use images are on the pieces like headlights while other pieces like the grill I personally find you can get better results from just making from scratch. Where you find these images can be from anywhere really, I find using a search engine and using certain keywords for different car makes can get good result for all sort of angles of the front and rear of a car. The most important thing in an image is the lighting is neutral, image is not at a weird angle, and the resolution is high enough it won't be low quality of a template. In some instances I have stitched two different images together (or more) together to create a whole part of a car or did a lot of manual painting/cleanup on an image to make it better quality as well. In the end the parts you use are only as good as the time you spend adjusting them.

For this I will be focusing on the grill of the Chevy going through essentially step by step how I make one from scratch. The first step I do is create a basic shape of what I want the grill to look like, here is an example of it laid out with some custom headlights in place as well:

1665530331020.png

Taking the vector shape I made I then will mask a texture inside it. The textures can be made from a scratch made pattern or metal mesh like texture depending on the design you are going for. For me I used a high resolution metal mesh texture. You can see from here how the grill is already starting to look more realistic now that the texture is in place of just a black shape:

1665530337770.png

After this I add an outline around the grill to give it more definition along with inner shading so it appears to be affected by the lighting and not just a flat surface:

1665530344520.png

At this point the grill is already looking very good and didn't take much time to create at all. Using a simple shape, masking in a texture, then applying some layer effects like outline and inner shadow you can relatively create from scratch a varying degree of grill parts for a car in a matter of minuets. This same thing can be applied to other parts such as the upper grill so we eventually have something looking like this on the front of the car now:

1665530350829.png

Now to many it probably looks good enough and we can call it a day. But for the quality of templates I am going for I want to take it a notch higher: shading around the parts themselves. With shading definition around the car parts themselves this can really up the realism and fool you into thinking the shape of the car nose is something very different than how it really looks. To achieve this effect you need two things: shading and highlights. Without both you would lose the effects of the design depending on how dark or bright your car's paint scheme is. If a car has a bright white background and only has highlights but no shading you wont be able to see the detail becasue the highlights are bright like the color of the car paint. On the flipside if you only do dark shading but no bright highlights around the parts then with a dark paint scheme you will see no details becasue the black shading matches the dark paint scheme. In the most basic terms highlights and shading are simply white and black colors on a layer (or separate layers) that have semi opacity so the layers under them still appear but now have the effect of highlights and shading a real object would. This is the 'secret' essentially of how some of your favorite templates for NR2003 look so good. Its becasue they achieve this trifecta of detail: parts + highlights + shading. How you combat this when making your own manufacturer templates is really up to you. Below I will show you my process that I found creates good results but also is quick and easy to achieve.

Before I make a mock shading and highlight piece I will demonstrate the effect I am trying to create with a simple circle on a neutral color in its background. At first I just have a black and white circle (the white circle is under the black one). The black circle represents the shading (this is the shadows and dark indented areas of a part). The white circle represents the highlights of a part (the area that have a bump or stick out to have light bounce on them):

1665530361732.png

At first you can see it just looks like two circle. But once I lower the opacity on both circles to 50% you see the background color begin to appear through and a side effects of this 'shading' and 'highlight; layer begin to appear more like an shape is pressed into the color:

1665530368198.png

Is still doesn't look right through as the top layers are still too opaque and the color under it doesn't appear much so I lower the black circle to 34% opacity and the white to 13%. Now this is all subjective of course but I found the magical number for most of my shading layers to be anywhere from 34% to 50% and the highlights from 13% to 20%. Depending on how 'intense' you want a design to appear you can lower or raise the opacity levels to create the desired result:

1665530375025.png

This looks slightly better but it still just appears like a few circles on a blue background really. The main problem is the circle shape is too hard, the edges need to be softened up more as real light curves on objects and wouldn't appear this hard. So I apply a blue to both oe the circles to get a result such as this now:

1665530381465.png

While not as bad as before it just looks like a blurred circle really. To really give it that depth I erase with a low opacity eraser brush the inside of the circle layers a bit. I also shrink the outside white circle a bit so the thickness isn't so large:

1665530389022.png

Now that is looking like detail on a surface and no longer just some circles. If I raise the shading circle opacity more I can create different 'levels' of shading depth. Here is an example of the varying degree you can achieve by just adjusting the opacity level, this is also why I keep my highlights and shading on different layers so I can always go back and adjust their levels if things don't look right:

1665530397261.png

Now that the highlights and shading is completed there is one final test, the dark and bright background effect. This is where the magic appears. Below you can see the shape and detail I made appears regardless of what the background color is changed to:
1665530406630.png
1665530411340.png

This same effect works when a more detailed texture is applied behind it as well:

1665530417972.png

So that is the basic concept broken down how one way shading on a car can be made. Now I am going to demonstrate on the top grill piece this put into practice. To begin a create a shading layer around the grill part:

1665530424162.png

Next I use a low opacity eraser to form a shape that give the illusion of this grill piece sticking out more:

1665530431016.png

After that I apply opacity levels and blur the layer a bit:

1665530437245.png

Once that is complete I duplicate my shading layer and change it to a white color and expand it a bit so it encompassed the shading layer region and this creates my highlight layer:

1665530455227.png

After that there is a completed grill piece essentially with highlights and shading:

1665530464484.png

Now its time to apply this same concept to the rest of the car both front and rear, the end results with all the parts, shading, and highlights I came up with something like this:

1665530573633.png

In my renderer you can see the full effect of a completed Chevy Monte Carlo SS:

1665530580929.png
1665530586143.png
1665530591018.png
1665530596671.png
1665530602513.png

In game the results look just as convincing:

NR2003 2020-02-24 19-54-20-89.jpg

NR2003 2020-02-24 19-55-02-43.jpg

NR2003 2020-02-24 19-55-19-56.jpg

NR2003 2020-02-24 19-56-16-91.jpg

This is the first time the mod essentially feels like a completed one becasue at this point it technically was/is. The user could now essentially paint on the Chevy Monte Carlo SS template and achieve the same results they would with other mods now that a proper manufacturer template is available. After all these months this was the ultimate resolution to be reached and it finally has. There are of course many other small details that needed to be finalized or cleaned up that takes time but the milestone of getting the first manufacturer completed is there now. This now officially concludes my dev posts so what is next? For that I have 3 things left to say and if you have been reading all along you definitely won't regret it.

1. The current state of the mod is going into its final release candidate state. This means after the carset for the mod is completed all the final packaging of the mod, templates, and preview/render scenes will be worked on. While this isn't part of the dev posts, for anyone making a mod this is still a huge amount of work even if a mod is 'completed'. During this process the final phase of uploading it all to my website along with all the promotional work needed (such as info for the web pages and trailer(s)) is done. Once I have it all ready to go you will begin to see some form of a trailer or at a minimum a public release date for when the mod will be available.

2. My work here is done, the dev post saga on a mod being created is completed and I wont have any other info to add really. That does not mean this thread needs to die off though. If you have further questions about the mod creation process or my methods feel free to ask. The point of this thread was after-all to get people interested in making their own mods. I do hope after I release my mod to make a video tutorial series that will at least go over the core parts of mod making but for now these dev posts will serve in its place, I hope it was enjoyable to read through as insightful in the process. I will admit I am glad if/when I do make another mod again I won't have to document everything again, this was a huge task on its own typing this all out and getting all the screencaps to show the process as I go through it.

3. Congratulations in reaching the very end, as a reward for taking the time to read everything I'm happy to share some extra details about the mod. To start when I originally began I planned to have about 10-11 different manufacturers templates across the 4 different makes done. Instead you will see on launch not only the 4 blank templates available (to create your own manufacturers with ease) but also 16 different manufacturers, yes 16 that are completed already. The Monte Carlo SS I showed today was just a sample. This does not include the numerous manufacturers I plan to create post-launch that will provide even more options.

Along with manufacturers the templates will include a robust amount of customization options such as over 20+ tire brands to choose from, pre-made contingency decals sets, b-pillar sets, and much more. I cannot state enough how much you will really be able to make this mod into your own creation with all the paint options alone to make some very unique looking series.

Last but not least (and most important probably) I've not revealed all this mod has to offer. I've deliberately hidden some features this mod will include. I'm not talking about features already revealed too like the decklid flap, being able to paint your own tire decals, the side mirror in the cockpit option, or even the new digital dash design. I've successfully developed and happy to say created some new features that no other mod has had before it. I'm not going to say its revolutionary by any means of course but with all things I make I try and think out of the box. Just becasue something only worked one way in NR2003 doesn't mean I can't try and make it look or work a different way. Similar to how my UIE 2013 mod did something new with NR2003 this mod will bring about something you've never seen in the game before to give you a new and different racing experience than you've had in this game since it launched. What all these feature are ... well you'll just have to wait for the release trailer.
 
Who read this thread (Total readers: 0)
    Back
    Top