International Competitive Racing Mod Development Thread

  • You DO NOT need an account in order to download the content that we host....ONLY make an account if you plan to be an ACTIVE member.
  • We DO NOT Allow Multiple Accounts, those people found to have more than one linked to their IP address Will be Banned.

Mystical

Always 110%
VIP
Member of the Year
Render Partner
Hot Pass Member
Moderator
Dec 21, 2017
1,504
93
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:

ogQ77ML.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:

7j7aIJZ.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):

nJVxelU.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:

jRRDwfz.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:

2YnBgtr.jpg


fTwULIW.jpg


YJ8atK6.jpg


bkwgLWd.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:

QQbLdiu.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:

xk418Bw.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.
 

Mystical

Always 110%
VIP
Member of the Year
Render Partner
Hot Pass Member
Moderator
Dec 21, 2017
1,504
93
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:

mdw6AnN.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

mnUjaOe.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:


Z3r1H47.jpg


239Verj.jpg


ET30pvt.jpg


AAt5tJa.jpg


lLEpvYn.jpg


RNs3muz.jpg


xJRAQAk.jpg


ORHHi1C.jpg


dEm3lzj.jpg


OeTMirD.jpg


YNVZIir.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.
 
Last edited:

Mystical

Always 110%
VIP
Member of the Year
Render Partner
Hot Pass Member
Moderator
Dec 21, 2017
1,504
93
IMHO this is NR2003 finest mod so far...your attention to the LOD damage and variety of outcomes in a multicar is absolutely brilliant! KUDOS!!!

Thank you for the kind words. I wouldn't go so far (myself) to say its the finest mod for NR2003. I would hope it at least will be a compliment to all the mods NR2003 has and is a testament to those that came before and what I've been able to learn from them and their generous tools/tutorials.

I am well aware that this might be the first mod for NR2003 that is purely fictional and was made to have generic noses so users can mold it how they want it to look with decals though. Its probably been a build up over the years of those (like me) that really wanted a mod they could make more fictional series with and were not constrained to the complex nose shapes of other mods. If it wasn't me I'm sure someone might have come along and made a mod like this eventually. I came back to NR2003 late last year and wanted to start painting my new fictional series and came to the realization if I truly want my series to be the best it can be with how I want it to look with all the manufacturers then I'd have to do it myself, so I've been hammering down on this mod ever since lol
 

Mystical

Always 110%
VIP
Member of the Year
Render Partner
Hot Pass Member
Moderator
Dec 21, 2017
1,504
93
I can't wait to see what the painters do with this, the potential for different makes is incredible here.

I'm very interested as well. Even if no one else uses it on a regular basis I will but if it fills the niche for like 5 other enthusiastic painters/fictional series creators it will be really cool to see.
 

Mystical

Always 110%
VIP
Member of the Year
Render Partner
Hot Pass Member
Moderator
Dec 21, 2017
1,504
93
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.

gTjv9kz.jpg


1pbMb5e.jpg


KhXiJk4.jpg


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

Mystical

Always 110%
VIP
Member of the Year
Render Partner
Hot Pass Member
Moderator
Dec 21, 2017
1,504
93
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:

3XcXqRL.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:

kHdcDhP.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:

l5curWp.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:

nrw3vaw.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:

OuETtNi.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.
 
Last edited:

Hot Links