Klems reacted to Radu for an article, 2018: Mapcore's Year in Review
Keeping with tradition, I'd say it's about time we took a look at what our community has achieved throughout the year. If last time I was saying how 2017 was a year of immense growth, then 2018 was surely one of significant change. And it hasn't been without its troubles and anxious moments. No change ever is, but I believe it to be for the best. We've seen some of our friends become parents, change work fields or get their first job in the industry. We've even seen a few pursue their dream projects. And for that, we have to applaud them. It takes courage to keep moving forward and to realise when it's time for something new. In the meantime, I hope this article inspires you and I wish everyone
2018: Mapcore's Year in Review
SteamVR - Gulping Goat Space Farm
by @Steve, @marnamai, @The Horse Strangler, @Sersch and others at Scraggy Rascal Studios
produced in collaboration with Valve
"Scraggy Rascal has been working with Valve to create all new SteamVR content, we've been given a lot of liberty to create these locations. Our goal was to create interesting and fun locations for the player to explore. These projects, over the last couple months, have been a crash course in Source 2,VR, project management, delivering within deadlines, working together as a team and personal growth. It has been an invaluable experience and great opportunity ... and we're just getting started!" - marnamai
Darksiders III - Art
by @The Horse Strangler and others at Gunfire Games
"Probably one of the biggest challenges the artists and designers faced on Darksiders 3 was working with both a platforming and fully connected streamed world. This meant that everything exists all the time. While we streamed levels in and out, areas couldn't intersect and we couldn't do the classic "Small exterior, big interior" swap. This was especially challenging because of how much verticality our design must support. We had a few "vistas", but for the most part every aspect of the level was accessible. If you can see it, you will likely be able to get there, jump on it, fight around it, etc. Fury, the main playable character can double jump, swing, float, glide and even rocket jump over 10 meters high. Personally for me it completely changed how I looked at art filling up a space. Every single mesh we placed impacted design. Art was design, and design was art." - The Horse Strangler
"Europa is a relaxing narrative experience. The goal with this game is to offer just enough challenge that its rewarding to get from one area to the other for more than just the visuals by using environmental hazards, platforming sequences and light puzzles that you can beat by exploring.The game is split into linear sections and wider areas, that's at the core of the game and as you play, you keep improving your characters moving ability, which will further exploration and give you the ability to solve newer light puzzles. There's none of the typical character upgrading systems, rather, the levels will offer the incremental challenges and the sense of progression. Europa's main focus lies in environmental storytelling and immersing the player in it's universe with passive storytelling, evoking awe and bliss with colorful watercolor-like art and music." - Helder Pinto
Counter-Strike: Global Offensive - Turnpike
"For a while the "Highway Restaurant" theme has been sitting in my little Concepts.txt file. When the Wingman Contest was announced, it felt like the perfect opportunity to turn this idea into a map, as its relatively small size would be fitting for the Wingman gamemode. The casual nature of Wingman made me add some elements that I would not normally add to, let's say, a Defusal map, like the TF2-esque team color coding (albeit subtle), the moving vehicles and the silly bomb target. Additionally, since the playable space is (almost) completely indoors, making it nighttime felt right, as it both emphasizes the interiors and makes for an atmospheric blorange background." - Squad
Dying Light - A New Hope
"A full-fledged custom single player campaign that ties in to the original story of the main game. It will see the main protagonist, Kyle Crane,leaving the City for the countryside to search for a specific elusive medicinal herb and bring it back to Dr. Camden who believes it could be the cure to the Harran Virus. This campaign is a one man show as I’m doing everything myself: level design, environment art/detailing, story creation, scripting/quest creation, custom dialog, custom audio, custom materials/textures, custom foliage systems, custom brushes for terrain painting/sculpting, lighting, manual nav mesh tuning, scripted NPCs…" - will2k
by @General Vivi and Michael Voeller
"Prodeus is the first person shooter of old, re-imagined using modern rendering techniques. Oh, and tons of blood, gore, and secrets. Creating Prodeus has meant a lot to us over the last year. It feels great to finally be doing something for ourselves. It can be pretty ambitious at times since there are just two of us, but I’m confident we can pull it off. Keep an eye out for the end of February for a big announcement." - General Vivi
Counter-Strike: Global Offensive - Ruby
"When I was on vacation in Portugal years ago I was so impressed by the city Lisbon that I really wanted to build a map that has the same vibe. At the time I was already working on different projects so I decided whenever I got enough time to work on a map this size I would go back. So early 2017 the moment was finally there, I went back to Lisbon to shoot (~2000) reference photos then made a list of things that are iconic for Lisbon and started working on Ruby. Adding a lot of height differation, warm colors, tile patterns and ofcourse trams was essentiental to get the Lisbon vibe." - catfood
by @dux, @PogoP and others at Unknown Worlds Entertainment
"A mix of Survival, story, mystery, resource gathering, base building with some accidental horror and plenty of deep, deep water. We had not long finished up with Natural Selection 2 and were hungry to develop a different kind of game. During development we were (and still are) a small team but the game kept getting bigger and grew into something far larger in scope than originally planned. So we soon realised that what we had could be turned into something really unique if we put our heads down and just cranked on it." - dux
Unreal Tournament 4 - Chamber
"I used Halo and Warframe artstyle as a reference. The goal of this project was to make fun and cool looking map with 100% custom art that is 100 mb in file size. To achieve that I used several advanced techniques such as custom vertex normals, deferred mesh decals, no bake, tiling base materials and masks. There are basically 5 or so texture maps used in the entire map, most of the filesize space was taken by lightmaps. I learned a lot doing this project in terms of composition, art direction and optimization. Hope you enjoy this map as much as I do!" - Ubuska
Counter-Strike: Global Offensive - Pitstop
by @Quotingmc and Quadratic
"It is not often that CS: GO receives a new game-mode, especially one as competitively focused as Wingman. I was understandably pleased at the announcement of the 2018 CSMapMakers contest for the mode. Pitstop was my entry where I set out to create a thematically bold centre piece for my portfolio. With the help of my teammate Quadratic and support from multiple Mapcore members, I learnt a lot about taking a level from a simple blockout to completion; I can say for certain I’m thrilled with the end result!" - Quoting
Black Mesa - Xen
by @JeanPaul, Adam Engels and others at Crowbar Collective
"While building Xen we had to design, iterate, and iterate (then iterate some more). We took what we thought we knew, and put it to the test. We learned how design and scope work together, and how to build momentum as a team. We are extremely proud of what we have accomplished over the year(s)! Despite the long and occasionally frustrating timeline, it has been a real testament to the commitment that this team and this community have for Half-Life." - Adam Engels
Unreal Engine 4 scene
"So I decided I would step out of my comfort zone and create a small environment in an engine I've never used before, UE4. Although I think I did a fairly decent job at the time there were ultimately many nuances I could have done better, but that is the artist dilemma. This project taught me the value of properly blocking out your environment, gathering as many references as you can and to have patience and not rush through assets, when breaking any of these rules I was punished for it. Stay tuned for my next project which will be a giant mech, coming soon Valve time TM." - Vorontsov
Counter-Strike: Global Offensive - Opal
"My goal with this project was to make a fun and compact defuse map, with a simple level flow, ample verticality, and an overlapped layout! I wanted to have interior and exterior, and break the grid a lot, to avoid having that "90 degrees grid" feel in the layout. I needed to have a vista on one side of the map to help with orientation, so I decided to make it a coastal town, inspired by those found on the island of Skopelos, Greece. Expect more updates in the near future, as I'm not yet satisfied with it. Since this is my only CSGO map, I want to put all my time and effort into it, and focus on quality instead of quantity. Thank you everybody for your support and feedback! <3" - MikeGon
Insurgency: Sandstorm - Precinct
by @Xanthi, @Squad, @Jonny Phive, @LATTEH, @Steppenwolf and others at New World Interactive
"Precinct, was a fun and challenging map to work on. We decided early on to melt District and Contact two of our very nostalgic maps together into a single large-scale urban environment. The goal was to preserve the nostalgic feeling and at the same time create something unique and fresh not just a 1:1 copy. In the block-out stage we started playing with different terrain heights, which eventually was the key to accomplish our goal. Terrain height was a bit of a trial and error process; I remember driving up a hill and not having enough torque, oops!!" -Xanthi
Counter-Strike: Global Offensive - Killhouse
"Killhouse showcases brutal duels, player reaction times, and close-quarters combat. A highly vertical layout ensures the sort of unpredictability and replayability ideal for CS:GO’s 2vs.2 "Wingman" game-mode." - FMPONE
Counter-Strike: Global Offensive - Station
by @Roald and @untor
"All experiences contribute to where I am at this point. I am just a hobbiest but I think I learned alot about level design just by doing it and enjoying it. Overal my goal is to improve myself on level design, but also enviorment art. I think I archieved a goal on level design and it's now time to continue on enviorment art. This is where untor morozov comes in. I have met untor a while ago. He made this map 'Waterfall' which was pretty populair. I liked his designs and added him as a friend. When I had this wingman map going on with positive feedback I just contacted him again to work on it with me and since this moment we have had a incredible teamwork. I am gameplay orientated and he is art orientated so we were a great couple. We just enjoyed work on this project and respected eachother and had alot of fun." - Roald
by @Yanzl and Sara Lukanc
"The Gap is a sci-fi thriller first person narrative exploration video game. You play as Joshua Hayes, a neuroscientist trying to figure out what happened, barely remembering anything about his past. It started as a project for our BA thesis and has now grown into a standalone game. It's also my first "real" indie game project, helping me learn a lot about Unreal Engine 4 and game development in general." - Yanzl
Counter-Strike: Global Offensive - Alexandra remake
"My first successful map was born 10 years ago for CS1.6. It was done in just 4 days. Since then it has been ported/improved several times on CS:S then finally on CS:GO. It always had a "dust" theme. Initially i wanted to remake it with an "inferno" style but when the new dust2 came i switched the plan to use the new assets. The map was and is frequently played on public servers especially in Eastern Europe so i had plenty of feedback to improve it. For some it's just another "dust" map, but for me it's my dust2." - Serialmapper
Far Cry 5 - Wetland Turmoil
"I wanted to try working with location design in an (imaginary) open world game for the first time, so I made this backwater cabin neighborhood. At the time I also wanted to see what the limits were in Farcry Arcade and how far I could push it. The level has fixed spawns (a limitation of the editor), but I toyed with the idea of making it work regardless from which direction the player would have approached it. The pathing and player guidance is more or less shaped like the number eight, with the church acting as an outlook. Your task is to eliminate all the bad guys. In the end I wanted to do so much more, but couldn't due to technical limitations. All in all it was a fun experience to make it." - grapen
Counter-Strike: Global Offensive - Trailerpark
by @OrnateBaboon and @Skybex
"We wanted to make a map for CSGO, using a theme that had not been seen in any previous version of Counter-Strike.The map had to incorporate everyday plausibility, provide for enough variety so that things remained visually interesting, but also be flexible enough to allow for the use of low geometry for easy grenade strategies. Being able to immediately recognize a theme in a map is always important, so with all this criteria in mind, A trailer park fitted the bill perfectly. There is still some way to go before a full release, but 2018 was a great year for progress on this project." - OrnateBaboon
Unreal Engine 4 scene
"I was inspired by games like stalker and the last of us. The goal was to make something photoreal with a lot of foliage. It took a couple of iterations but I think I achieved the goal in the end. While making this project I've had to learn a lot about Speedtree to make all the foliage, it was a really cool experience. Right now I'm in the army so unfortunately I can't make any more scenes right now, but after I'll come back I'll try to make more scenes like that." - Corvus
Overwatch - Busan
by @Minos, @[HP], @PhilipK, @IxenonI, Phil Wang, Lucas Annunziata and others at Blizzard Entertainment
"Busan was a challenging map to make. Due to the game having 12 different heroes on screen we have a somewhat limited memory budget for maps, that includes all models, textures, effects, collision data, lighting information, etc... Fitting three radically different areas (Downtown, Sanctuary and MEKA Base) into one single map budget required us to find new ways to optimize our work. In the end, we were even squeezing kilobytes out of collision data to make it all fit, no kidding! But the result speaks for itself, the map was fun to work on and we are very proud of what we accomplished!" - Minos
Counter-Strike: Global Offensive - Highlands
by @ElectroSheep, @El Moroes and @'RZL
"We wanted to make a map in Scotland because, thanks to dishonored 2, we were browsing a lot of references froms this area and we really loved it. I also went myself here in holliday after that. We asked one of our close friends to make some special props, like the police van, the taxi, the phonebox and some others. Unfortunatly the hard development of Dishonored 2 put us in a difficult state where we weren't able to work on the map. So we lost motivation. Then RZL contacted us because he didn't want the project to die so we gave him the keys. And RZL became busy too ^^. Life sometime say NO I guess, hehe. Now Highlands Is my only advanced project I still didn't finished and I'm ready to give it a try, I hope." - ElectroSheep
"Highlands...is this map is a joke? Certainly no but we can say that the development is quite longer than what we expected. Perhaps we learn well how the famous "Valve time" works? :p No seriously I think we can explain that with the motivation. Of course we were motivated to create something cool with this map but with the time and, I think, with what we live in our life we never took the time to do it correctly...I mean we never had a constant rythm on the map. This (and other personal things) led to the current statut of the map; a still "work in progress" map started in 2014. But ElectroSheep came back and his goal is to finish it, and because he's right, I'll come back too to help him. Just, be patient (again) ;)" - El Moroes
Battlefield V - Fjell
by @Puddy, @Pampers and others at DICE
"Fjell was an explosive experiment which paired a new Battlefield dynamic, planes and infantry only, with an epic gosh darn mountain top. Tackling this design combination was like dealing with a bear after you've kicked it in the balls. It was a fun challenge and even though its extreme gameplay is quite polarizing when compared to more middle-of-the-road maps, I am happy that we went there!" - Puddy
Counter-Strike: Global Offensive - Iris
by @BubkeZ and @Oliver
"Iris was born out of a shared interest in the TV-show "Seinfeld", funnily enough. One day BubkeZ noticed I had changed my Steam profile picture to a photo of "George Costanza" and just like that the wheels were in motion! In the beginning, BubkeZ had the vision of an old city environment with lots of dirty alleyways and brick architecture. We didn't want to fall in the trap of making the map look too bleak, so we came up with the idea of making a mid-century town set in autumn. While the map certainly have visual elements from the 50's, I would say the overall theme of Iris is american auto-industry. Making the old cars was definitely my favorite part of making this map!" - Oliver
Unreal Engine 4 scene
"I have always been a fan of retro and vintage, so this was like a dream to me. After watching the first season of True Detective, I immediately fell in love with the office set and the way the series was shot. I have definitely learned a lot from this project, mostly lighting techniques that can fill your scene with a story. The goal was to recreate their environment in my own style, and I'm pretty satisfied with how it turned out. I definitely wasn't expecting this much of positive feedback and I'm really thankful for this community. I want to do something with the environments, not just as a portfolio piece, but make a short film or make a small adventure game out of them." - Brightness
Counter-Strike: Global Offensive - Insertion 2
"Being the follow up to the first Insertion it will have the same overall concept with the spawning and open-world like layout. However this time it will be a more urban setting and overall higher quality art assets. I always love to make environments that feels real. And that are familiar. Its all made up. But the details and various elements in Insertion 2 is from my childhood basically. Friends that grew up in the same place I have recognizes it aswell." - Oskmos
The Door Challenge
Designing Highly Replayable Stealth Levels for Payday 2
Level Design in Max Payne: Roscoe Street Station
Effect and Cause - Titanfall 2 Level Breakdown
2017: Mapcore's Year in Review
Hurg smiles upon you all!
Klems reacted to Radu for an article, 2017: Mapcore's Year in Review
(New logo by Yanzl)
I'm sure that by now most of us have our sleeves rolled up and are ready to tackle yet another year, but before we move forward let's take a moment to look back at what 2017 meant for our community. It was a time of immense growth for both professionals and amateurs alike. A time when everyone seemed to have surpassed their former selves. And without slowing down, some have even managed to land their first job in the industry. I don't know what this new year holds, what challenges to overcome will arise, but I know for certain that I'm excited to see everyone become even greater!
2017: Mapcore's Year in Review
Overwatch - Oasis
by Phillip K, Bram Eulaers, Helder Pinto and others
Dishonored 2: Death of the Outsider - Curator level
by electrosheep, kikette and others
Payday 2 - Brooklyn Bank level
by General Vivi
Sniper Elite 4 - Regilino Viaduct
by Beck Shaw and others
Counter-Strike: Global Offensive - Offtime
Team Fortress 2 - Shoreleave
Art pass, props and sound by Freyja
Wolfenstein II: The New Colossus - Farmhouse
Modeled, textured and composed by BJA
Half-Life 2: Downfall
Counter-Strike: Global Offensive - Studio
by ZelZStorm, TanookiSuit3 and Hollandje
Portal 2 - Refraction
Counter Strike: Global Offensive - Breach
by Yanzl and Puddy
Counter-Strike: Global Offensive - Berth
Counter-Strike: Global Offensive - Kaizen
by Andre Valera and Jakuza
Counter-Strike: Global Offensive - Asylum
Half-Life 2: Episode 2 - FusionVille: The Shadow over Ravensmouth
Unreal Engine 4 scene
by Dario Pinto
Counter-Strike: Global Offensive - Grind
by The Horse Strangler, `RZL and MaanMan
Counter-Strike: Global Offensive - Aurelia remake
Counter-Strike: Global Offensive - Tangerine
by Harry Poster
Counter-Strike: Global Offensive - Abbey
by Lizard and TheWhaleMan
Counter-Strike: Global Offensive - Apollo
by Vaya, CrTech, Vorontsov, JSadones
Counter-Strike: Global Offensive - Sirius
by El Exodus
Unreal Engine 4 scene
Counter-Strike: Global Offensive - Subzero
Counter-Strike: Global Offensive - Biome
Klems reacted to will2k for an article, Displacement Vs. Func_detail - A comparative fps study
What is the question?
Ever since the dawn of humanity, this question was the center of a colossal debate. Greek and Roman philosophers tried to solve it to no avail. Alchemists in the Middle Ages gave it a go and failed miserably. Even Industrial Age scientists touched on the subject with no big breakthrough.
Luckily for everyone, I am here today to answer this question and put an end to a centuries-long argument: What is better in terms of fps, func_detail or displacement, in the context of the Source engine? If you were expecting an existential question, I am deeply sorry to disappoint you but hey, life is full of disappointment.
This is going to be a short but sweet article; fewer words, more numbers and screenshots. The study is pretty straightforward and systematic. To make things fair and square, I will create 2 exactly identical test maps: In one, everything will be turned to func_detail while the other will have everything switched to displacements. I will then proceed to record the localized fps in these maps from a preset location and compare. Pretty simple, isn’t it? Well, it should be as the whole purpose of this study is to compare func_detail vs. displacement in absolute terms while keeping all other parameters constant.
The first map to test is the one made of displacements. Here is the screenshot showcasing the fps.
The map itself is very simple consisting of 7 identical houses placed at predetermined locations and surrounded by 4 walls. The houses are detailed enough to put some slight pressure on the rendering engine. For the skeptics among you, here is a wireframe in-game shot to show that everything is made of displacements.
To refresh your memories, in Source engine wireframe mode, green is displacements, pink is brushes (world, func_detail, brush entity, etc…), blue is props, and yellow is decals/overlays. The recorded fps in this map is 289. We now move to the second map, the func_detail version to check how the frame rate is faring. Here is the awaited screenshot.
Surprise, surprise. The fps is 330, much higher than the displacement version. Here’s the wireframe shot to put your mind at ease.
Honestly, I was thinking the figures would be more on par as the engine handles both details and displacements pretty well, but in the end, Source is about BSP so I guess brushes would get a slightly preferential treatment over polygon meshes (conspiracy theory ensues).
The question that forces itself now is: Should we rely solely on func_detail in our maps? Of course not. Both func_detail and displacement have their advantages and inconveniences and leaning exclusively on one will inevitably lead you to a dead end. The best thing to do is get the best of both worlds by using them together.
In our little test map, how about we mix things up in a third version: let us make the house walls out of displacements while having the doors, windows, frames, and roofs made of func_detail. Incoming screenshot, brace yourselves.
Much better, isn’t it? We have now 311 fps, a very nice middle ground between the 330 fps of func_detail and the not-so-bad 289 fps of displacements. The mandatory wireframe shot follows.
So, what can we learn from all this? Well, apart from the obvious places where displacements are mandatory for the organic mesh sculpting (rock formations, cliffs, bumpy/twisted roads…), it is a good idea to spread some more displacements around your map to alleviate the total brush-count that you will inevitably hit the maximum in a highly detailed map. Your fps will remain high and you will enjoy the margin to keep adding structures to your map without fear of reaching the maximum allowed total brushes (substituting brushes with models/props is another viable solution that is not in the scope of this article).
I’m a man of science and I know that one example is not enough to draw conclusions. That’s fine, I have a second test map to investigate what we established before. The concept of having 2 identical maps is still the same, however, this time, we will spice things up by adding some static/physics props and some decals here and there. We will start with the displacement version.
230 fps, not too shabby. Let’s check another angle.
220 fps, more or less, on the same level as the previous number. Now for the wireframe shot.
The tree cards in the background are func_brush in both maps (the detail and displacement versions), so it’s a level playing field in this case.
Now for the moment of truth you all have been waiting for: will the detail version have better fps to support my earlier findings or will I be publicly embarrassing myself? A screenshot to the rescue.
I knew I was right, never breaking a sweat (apart from the nervous cold sweat I just wiped off my forehead). 255 fps for the first location A. Let’s check the other angle or location B.
250 fps. Bam, sweet victory…sorry I got carried away a bit. Ahem…Let’s get back to being scientific, shall we. Here’s the wireframe proof.
Let’s recap all the action and numbers in a nicely formatted table.
You can notice the fps gap between the func_detail and displacement versions in both test maps whereas the “mixed” version considerably narrowed this gap. The numbers have spoken.
The bottom line
The bottom line is, if you rely only on func_detail, you will hit the maximum brush-count allowed in Source and severely limit your map and creativity. You might also run into T-junction issues as well as parts of your geometry flickering and disappearing from certain angles in densely func_detail’ed areas.
On the other side, if you stick to displacements alone, then you will have lower fps than a func_detail map version. You might also run into visible seams and un-sewn displacement issues.
Having a clever distribution of both func_detail and displacement in your map is the way to go. You will have high fps, better lighting around the edges, and organic sculpting while not getting anywhere near the total brush limit; the best of both worlds.
Klems reacted to FMPONE for an article, Congratulations to our finalists and Grand Prize Winner, DE_EMPIRE!
(Art by Thurnip)
It’s finally time to declare a grand prize winner in our exciting Counter-Strike: Global Offensive mapping contest. You’ve playtested the maps on Reddit, you've waited months for the results... let's get down to business!!
GRAND PRIZE WINNER:
By Andre Valera
Sometimes it boils down to consistency: broad strength across several categories. No map in our contest better exemplifies this notion of consistent quality than Empire.
Empire features a stacked bomb-site layout similar to popular official maps like Nuke and Overpass. While this relatively unorthodox design presents level designers with additional challenges, Empire ably sticks its landing. Furthermore, the ambition of Empire’s design is tempered well by its no-nonsense visual presentation. We’re left with a digestible, fun, and very playable level.
Congratulations, Andre Valera!
Featured in a goRGNtv showmatch!
Featured in CEVO PUG rotation for one month!
$1000 and Mapcore swag!
CS:GO prize pack courtesy of Valve:
a signed CS:GO poster, lanyard, vinyl sticker
SteelSeries Kana Mouse!
A truly unique map. Some felt it was the strongest entry in the contest given its strong theme, abundant polish, and beautiful visuals; others, however, questioned the map's small scale. This was a tough map to judge.
CS:GO prize pack courtesy of Valve:
a signed CS:GO poster, lanyard, vinyl sticker
An attractively sleek map, there is plenty of room for Royal to blossom into something very special.
CS:GO prize pack courtesy of Valve:
a signed CS:GO poster, lanyard, vinyl sticker
By Ornate Baboon
A map that was under heavy construction for much of our contest, one gets the sense that Coast wasn't quite ready yet. With a little bit more time, who knows?
$100 + Mapcore swag!
CS:GO prize pack courtesy of Valve:
a signed CS:GO poster, lanyard, vinyl sticker
~~~We at Mapcore would like to thank the r/GlobalOffensive moderators for their assistance, our lovely guest judges, Valve, goRGNtv, CEVO, as well as Gamebanana.com and Steam workshop artist EGO DEATH for contributing to our prize pool.
Last but not least... THANK YOU, for making this 'Core event special and fun!
"May Hurg guide you..."
Klems reacted to FMPONE for an article, Reddit + Mapcore CS:GO Mapping Contest Finalists Announced!
(Art by Thurnip)
Contest finalists have been chosen!
Before announcing our finalists, we want to thank everyone for participating and giving your feedback: with over 150 entries, this event has thus far exceeded expectations in every way.
We strongly considered adding an “honorable mentions” addendum to this announcement, but realized there were simply too many maps which came extremely close to becoming finalists, lacking only one of our “big three” judging criteria components.
Now, without futher ado…
(in no particular order)
By Andre Valera
By Ornate Baboon
These exciting levels exhibit competitive potential, excellent visual presentation, AND a satisfying level of polish, making them truly strong representatives for our talented community. As finalists competing for the grand prize, the authors of these levels will be able to update their work based on your feedback, including fine-tuning their competitive layouts using public playtesting over on Reddit. Let's support them on their journey!
To check out the excellent prizes awaiting our finalists (including money prizes + official Valve merchandise), click here.
...but who will be the Grand Prize Winner? Find out September 30th.
P.S. – To all our wonderful participants: don't despair. Level design is an art to be pursued for its own sake, and brilliant work should always be celebrated and studied. Additionally, Valve has consistently supported CS:GO community mapping, and Valve Operations remain a lucrative and thrilling opportunity for community mappers such as yourself. Valve’s criteria for Operations can be found here.
"Never give up." - Hurg
Klems reacted to leplubodeslapin for an article, Source Lighting Technical Analysis: Part One
After the announcement of the Reddit + Mapcore mapping contest, the website has welcomed many newcomers. A proof that, even if it is a twelve year old game engine, Source engine attracts map makers, and there are lots of reasons for that. It is common knowledge that technology has moved forward since 2003, and many new game engines have found various techniques and methods to improve their renderings, making the Source Engine older and older. Nevertheless, it still has its very specific visual aspect that makes it appealing. The lighting system in Source is most definitely one of the key aspects to that, and at the end of this article you will know why.
About the reality...
Light in the real world is still a subject with a lot of pending questions, we do not know exactly what it is, but we have a good idea of how it behaves. The most common physic model of light element is the photon, symbolized as a single-point particle moving in space. The more photons there are, the more powerful light is. But light is in the same time a wave, depending on the wavelengths light can have all kind of color properties (monochrome or combined colors). Light travels through space without especially needing matter to travel (the space is the best example; even without matter the sun can still light the earth). And when it encounters matter, different kind of things can happen:
Light can bounce and continue its travel to another direction Light can be absorbed by the matter (and the energy can be transformed to heat) Light can go through the matter, for example with air or water, some properties might change but it goes through it And all these things can be combined or happen individually. If you can see any object outside, it is only because a massive amount of photons traveled into space, through the earth’s atmosphere, bounced on all the surfaces of the object you are looking at, and finally came into your eyes.
How can such a complex physical behavior from nature be simulated and integrated into virtual 3D renderings?
One of the oldest method is still used today because of its accuracy: the ray-tracing method. Just to be clear, it is NOT used in game engines because it is incredibly expensive, but I believe it is important to know how and why it has been made the way it is, since it probably influenced the way lighting is handled in Source and most videogame engines. Instead of simulating enormous amount of photons traveling from the lights to the eye/camera, it does the exact opposite. If you want a picture with a 1000x1000 resolution, you will only need to simulate the travel of 1 000 000 photons (or “rays”), 1 for each pixel. Each ray is calculated individually until it reaches the light origins, and at the end the result is 1 pixel color integrated in the full picture.
By using the laws of physics we discovered centuries ago, we can obtain a physically-accurate rendering that looks incredibly realistic. This method is used almost everywhere, from architectural renderings to movies. As an example, you can watch The Third & The Seventh by Alex Roman, one of the most famous CGI videos of all time. And because it is an efficient way to render 3D virtual elements with great lighting, it will influence other methods, such as the lightmap baking method.
OKAY LET’S FINALLY TALK ABOUT THE SOURCE ENGINE, ALRIGHT!
A “lightmap” is a grid that is added on every single brush face you have on your map. The squares defined by the grid are called Luxels (they are kind of “lighting pixels”). Each luxel get its 2 own properties: a color and a brightness. You can see the lightmap grids in hammer by switching your 3D preview to 3D lightmap grid mode.
You can also see them in-game with the console command mat_luxels 1 (without and with).
During the compilation process, a program named VRAD.exe is used. Its role is to find the color and brightness to apply for every single luxel in your map. Light starts from the light entities and from the sky (from the tools/toolsskybox texture actually, using the parameter values that has been filled in the light_environment entity), travels through space and when it meets a brush face:
It is partially absorbed in the lightmap grid A less bright ray bounces from the face Here is an animated picture to show how a lightmap grid can be filled with a single light entity:
When you compile your map, at first the lightmaps are all full black, but progressively VRAD will compute the lightmaps with all the light entities (one by one) and combine them all at the end. Finally, the lightmaps obtained are applied to the corresponding brush faces, as an additive layer to the texture used on that face. Let us take a look at a wall texture for example.
On the left, you have the texture as you can see it in hammer. When you compile your map, it generates the lightmaps and at the end you obtain the result on the right in-game. Unfortunately, luxels are much rougher, with a lower resolution, more like this.
On the left you have a lightmap grid with the default luxel size of 16 units generated my VRAD, a blur filter is applied and you obtain something close to the result on the right in the game.
In case you did not know, you can change the lightmap grid scale with the “Lightmap Scale” value with the texture tool. It is better to use values that are squares of 2, such as 16, 8, 4 or even 2. Do not go below 2, it might cause issues (with decals for example). Only use lower values than the default 16 if you think it's really useful, because you will drastically increase your map file size and compilation time with precise lightmap grids. Of course, you can also use greater values in order to optimize your map, with values such as 32, 64 or even 128 on very flat areas or surfaces that are far away from the playable areas. You can get more infos about lightmaps on Valve’s Wiki page.
But as we said before, light also bounces from the surface until it meets another brush, using radiosity algorithms. Because of that, even if a room does not have any light entity in it, rays can bounce on the floor and light the walls/ceiling, therefore it is not full black.
Here’s an example:
The maximum amount of bounces can be fixed with the VRAD command -bounce X (with X being the maximum amount of bounces allowed). The 100 default value should be more than enough.
Another thing taken into account by VRAD is the normal direction of each luxel: if the light comes directly against the luxel or brushes against it, it will not behave in the same way. This is what we call the angle of incidence of light.
Let us take the example of a light_spot lighting a cylinder, the light will bright gradually the surface - from fully bright at the bottom to slightly visible at the top.
In-hammer view on the left, in-game view on the right
Light Falloff laws
One of the things that made the Source Engine lighting much more realistic than any others in 2004 is the light falloff system. Alright, we saw that light can travel through space until it meets something, but how does it travel through space? At the same brightness, whatever the distance is between the light origin and destination? Maybe sometimes yes… but most of the time no.
Imagine a simple situation of a room with 1 single point light inside. The light is turned on, it produces photons that are going in all the directions around it. As you might imagine, photons are all going in their own direction and have absolutely no reason to deviate from their trajectory.
At one time, let’s picture billions of photons going in all the directions possible around the light, the moment after, they are all a bit further in their own trajectory, and all the photons are still there, in this “wave”. But, as each photon follows its own trajectory, they will all spread apart, making the photon density lower and lower.
As we said before, the more photons there are, the more powerful light is. And the highest the density, the more intense light is. Intensity of light can be expressed like this:
You have to keep in mind that all of this happens in 3D, therefore the “waves” of photons aren’t circles but spheres. And the area of a sphere is its surface, expressed like this:
(R is the radius of the sphere)
If we integrate that surface area in the previous equation:
With ♥ being a constant number. We can see the Intensity is therefore proportional to the reverse of the square of the distance between the photons and their light origin.
So, the further light travels, the lower is its intensity. And the falloff is proportional to the inverse of the square of the distance.
Consequently, the corners of our room will get darker, because they are farther away from the light (plus they don’t directly face the light, the angle of incidence is lower than the walls/floor/ceiling).
This is what we call the Inverse-Square law, it’s a very well-known behavior of the light in the field of photography and cinema. People have to deal with it to make sure to get the best exposure they can get.
This law is true when light spreads in all possible directions, but you can also focus light in one direction and reduce the spread, with lenses for example. This is why, when Valve decided to integrate a lighting falloff law in their engine, they decided to use a method not only following the inverse-square law but also giving to mapmakers the opportunity to alter the law for each light entity.
Constant, Linear, Quadratic... Wait, what?
In math, there is a very frequent type of functions, named polynomial functions. The concept is simple, it’s a sum of several terms, like this:
Every time, there is a constant factor (the “a” thing, a0 being the first one, a1 the second one, a2 the third one...), multiplied with the variable x at a certain degree:
x^0 = 1 : degree 0 x^1 = x : degree 1 x^2 : degree 2 x^3 : degree 3 ... And
a0 is the constant named “constant coefficient” (associated to degree 0) a1 is the constant named “linear coefficient” (associated to degree 1) a2 is the constant named “quadratic coefficient” (associated to degree 2) Usually, the function has an end, and we call it by the highest degree of x it uses. For example, a “polynomial of the second degree” is written:
Then, if we take the expression from the inverse-square law, which was:
With a2 = 1 and D being the variable of distance from the light origin.
In Source, the constant ♥ is actually the brightness (the value you configure here).
It is simply an inverse polynomial of the second degree, with a0 and a1 equal to zero. And we could write it like this:
And here you have it! This is approximately the equation used by VRAD to determine the intensity of light for each luxel during the compilation. And you can alter it by changing the values of the 3 variables constant, linear and quadratic, for any of your light / light_spot entity in your level.
Actually you set proportions of each variable against the other two, and only a percentage for each variable is saved. For example:
By default, constant and linear are set to 0 and quadratic to 1, which means a 100%quadratic lighting attenuation. Therefore, by default lights in Source Engine follows the classic Inverse-Square law.
If you look at the page dedicated to the constant-linear-quadratic falloff system on Valve’s Wiki, it’s explained that the intensity of light is boosted by 100 for the linear part of equation and 10 000 for the quadratic part of equation. This is due to the fact that inverse formulas in equations always drop drastically at the beginning, and therefore a light with a brightness of 200 would only be efficient in a distance of 5 units and therefore completely pointless.
You would have to boost your brightness a lot in hammer to make the light visible, that's what Valve decided to make automatically.
The following equation is a personal guess of what could be the one used by VRAD:
With constant, linear and quadratic being percentage values. The blue part is here to determine the brightness to apply, allowing to boost the value set in hammer if it is as least partially using linear or quadratic falloff. The orange part is the falloff part of equation, making the brightness attenuation depending of the distance the point studied is from the light origin.
The best way to see how this equation works is to visualize it in a 2D graph:
This website provides a great way to see 2D graphics associated to functions. On the left, you can find all the elements needed with at first the inputs (in a folder named “INPUTS”), which are:
a0 is the Constant coefficient that you enter in hammer a1 is the Linear coefficient a2 is the Quadratic coefficient B is the Brightness coefficient In another folder are the 3 coefficients constant, linear and quadratic, automatically transformed into a percentage form. And finally, the function I(D) is the Intensity function depending on the distance D. The drawing of the function is visible in the rest of the webpage.
Try to interact with it!
This concludes the first part, the second part will come in about two weeks. We will see some examples of application of this Constant-Linear-Quadratic Falloff system, and a simpler alternative. We will also see how lighting works on models and dynamic lighting systems integrated in source games.Thank you for reading!
Part Two : link