As we reviewed it shortly after its release and already revealed the answers to most of our questions, we agreed with Amar to run with a revised interview in light of this. Let’s find out what he had to say:
WW: We were pleasantly surprised when we reviewed the European release of Onslaught last week. Do you feel the American media will see it in the same favorable light when it is released?
AG: That’s a good question. I can’t claim to know the European market that well, but if Western gamers’ tastes for FPS games are similar across both continents, then we just might see favorable scores from North American reviewers too.
WW: It comes as a bit of a surprise for a FPS to be developed in Japan where the genre is not known for being very popular. What unique qualities do you think Onslaught has when compared to Western FPS games?
AG: The one thing that strikes me is the focus on points and rankings. In Western-developed FPS games, the focus is usually on blowing things to bits and getting things done. In Onslaught, the focus is sometimes on doing well and constantly improving your performance, the result of a very Eastern thought process. The points and rankings are the results of that thought process: get a good score, work hard to improve on it, and see if you can improve your ranking.
WW: Which FPS games inspired the development of Onslaught?
AG: I wouldn’t say there’s any particular one that inspired it. FPS is a pretty established genre, so there are a lot of conventions that by definition are in every FPS game. Looking at it, I’m sure a lot of people will make comparisons to a certain sci-fi movie from 1997, but the only real likeness is that you’re shooting bugs.
WW: Why does Onslaught not feature a death match mode?
AG: This was a specific design decision. Hudson’s core design philosophy prohibits explicit violence between people playing a game. I know what you’re thinking: what about Bomberman? Well, that’s because he’s a cute little cartoon character and technically, if you go way back in his history, he’s a robot. In Onslaught, it would be people shooting each other in the face with guns, which goes against our philosophy. If we could have done deathmatch in this game, we would have, and I guarantee you I’d be having a blast playing it online against you.
WW: It took us just 4 hours to complete the game on the normal setting. What is going to keep gamers coming back to Onslaught once this is completed?
AG: Impressive! Once players finish the game on normal, they can try harder difficulty settings (believe me, they get HARD). There’s also the online 4-person co-op. You can get online to work with your buddies exterminating the bugs, and you get your choice of working with your friends to get a high score or competing with them to see who can kill more bugs.
WW: What put you off adding a local multiplayer mode in Onslaught? Do you feel online play is much better suited for this type of game?
AG: I think that’s a result of platform limitations. There’s only so much ‘game’ you can fit into 40 megs, and as you’ve seen we packed a lot of levels, textures, enemies, guns, and more into that space. As you know with all WiiWare games it’s a give and take of what you can keep and what you have to remove. To add local multiplayer, we would have had to take something else out of Onslaught.
WW: Will there be any downloadable content for this game in the future?
AG: At this time, there aren’t any plans for downloadable content.
WW: Was sticking within the file size limit for WiiWare a challenge for this sort of graphically-intensive game?
AG: Yeah, it definitely was a challenge. When I first heard of this concept, I never thought the developers could pull off a good FPS game in 40 megs. I was shocked when I finally saw the game in action. Despite the filesize limit, they still packed plenty of variety into the game.
WW: With the DSi coming out in April, will Hudson be releasing any DSiWare games in the future?
AG: Absolutely! Now, as far as which ones, that’s still TBD.
Thanks to Amar for taking the time to answer our questions. We recommend that you consider giving Onslaught a chance if you haven't already. We don't hand out scores of 9/10 lightly here at WiiWare World!
Stay tuned for our upcoming interview with none other than the fastest button basher in the East, Takahashi Meijin about Hudson’s next WiiWare game, Adventure Island: The Beginning. It should make for a fascinating read.
Comments 41
I like their reason for no Deathmatch. I respect them a tad more now.
Nice interview, and it's good for it to see the light of day!
Oh... and Bomberman for DSiWare!!
mmm good reason for no deathmatch
Either there no DM reason is really good, or theyre just really good at making up excuses....
@Bahamut ZERO: it's seems pretty reasonable, and I don't recall any Hudson games involving headshots before...
So if they're going to make a deathmatch game all player characters will be robots, eh?
that is a good reason.
"At this time"... so there still is a slight possibility that DLC will be available sometime in the future... starts praying
I thought the first question was quite apt given IGNs crappy review of this great game:
http://wii.ign.com/articles/957/957234p1.html
I bet you didn't see that coming did you Hudson?
Mario Party DSi DLC?
@WLI: I guess. Just wierd to say "we hate violence" and make an FPS
@Doggle: I read that review. IGN dosnt know **** anymore.
@Doogle - I don't think Hudson is too worried about it. The real measure of success is the number of downloads. And as we've already seen, reviews don't have much of an effect on WiiWare games. (**cough**pongtoss**cough**)
Personally, I read one thing into the IGN review: Confusion. It strikes me that they went into the review expecting to find one thing, then didn't know what to think when they found something completely different. Reading the text, the reviewer seems to actually like the game. Yet all of his statements are guarded as if he can't quite bring himself to say so.
Since Onslaught is NOT a traditional FPS, it's no surprise that reviewers will have a crisis of identity. They know it's inferior to most FPSes, but then why is it so much fun to play?!?
The answer I came up with (that one poster over on GameFAQs echoed) is that Onslaught has more in common with rail shooters than FPSes. And since it has all the sensibilities of a rail shooter, it provides much of the same mindless fun of a rail shooter. The only real difference is that dodging enemy fire means actually moving out of the way rather than shooting incoming fire.
@thewiirocks - It would be naive to think that a site as big as IGN doesn't have a large sway on the number of downloads. This isn't some crap aimed at the causal market like Family Table Tennis, I doubt many will buy this from the exciting title alone. Anyway I am just glad I read the review here before IGN or I would have missed out on this awesome game. It just keeps getting better the more I play it, and I normally don't even like FPS games much.
So they have to be robots in order for us to have death-match? lol, the protagonists already look like they are. Split-screen and deathmatch was the only thing missing from this title.
"This game shouldnt exist." What the hell thats supposed to mena. Is the reviewer saying that the Wii shouldnt have an FPS or that he cant stand variety in a download service.
That review is utter bull****. Theres one thing to say it stinks, its another to say that "its good, but shouldnt exist, so Im giving it a low score."
@Bahamut: He's saying, that a service such as WiiWare, that has a small space limit, shouldn't have a full 3D FPS. It just doesn't make since to do that, but Hudson seemed to pull it off.
But I do agree with him, WiiWare shouldn't have all these big 3D games...
EDIT: Wow, I am SO sorry for that huge amount of the same post! THAT, was the worse lag I've ever seen...
@Doogle - And yet, Onslaught joins the mass of games given bad reviews by IGN that sell like hotcakes anyway. IGN has almost no sway over WiiWare games. Heck, if WiiWare World can't sway the public, why would IGN?
@Doogle: I wouldn't trust IGN anyways. Not exactly the most reliable. Though if they say a wii game is good it's probably true since their kinda biased with wii.
@popyman: So he's saying that he dosnt want people to stretch the limits of the technology given? Or that he dosnt want people to try new things?
There was a time when man ate plain bread. But then one day a man came up with the bright idea of putting butter on it. I dont think people back then said that "buttered bread shouldn't exist", so why should we now.
If my metaphor dosnt make sense its cuz I suck at Lanuguage Arts
@Bahamut ZERO: It pretty much sums up the statement though . IGN is all cashed up and get to do awesome stuff like play Legends of Wrestlemania with Ted DiBiase, but they do the worst reviews I've ever seen.
I think it's awesome that WiiWare world are continuing to do great interviews with the right people. They just can't seem to be able to crack Nintendo themselves, unfortunately
I don't think IGN's review was actually crappy, I just think the reviewer had different tastes. He mentions his oppinion of EDF and we can use that to establish a baseline (EDF is indisputably better than Onslaught) of his tastes, mindless kill-everything shooters just don't seem to be his thing (or at least not a thing he'd give high scores to). Though I do wonder what he meant with the AI running circles around you since they always try to stay behind you, I guess he tried looking at them and was surprised they ran away or something.
As for the "shouldn't exist" comment, I think he just means he couldn't believe it's physically possible to make an FPS on WiiWare yet it happened. It's like he saw a unicorn.
@Bahamut: WiiWare isn't made to stretch the limits of the service. It's limits are tiny, and if you stretch it to much, it will easily snap.
WiiWare is made for small developers, and big yet simple ideas.
uggghhhh!!! Once again, IGNorant.
Now, I haven't gotten round to getting this, but I will soon. They just pointed out how, "lololol, it says,"That's why you're still a kid," lolol. SERIOUSLY IGN! Barely focuses on the gameplay and describes the "bad translation" a lot. Isn't having bad translation quite amusing? This isn't an uber serious story shooter, so it only adds to the game's charm. Honestly, I wonder whether or not the "big" sites appreciate games like those on WiiWare (apart from the AAA games.) WiiWare World and Wiiloveit are two of the very few reviewing sites that really give games chances, especially WiiWare. Don't get me started on ONM's reviews. Mario=Gold Award for them. They're good for some things, but don't trust their reviews.
Rant over
@Poppyman: Its always good to stretch the limits of anything. Without strecthing WW to the limit, we wouldnt be playing so many good, origional games. WW is for more than just small devs now. Digital downloading is becoming quite popular, so bug names (ex. Hudson) realize this, and are putting quality titles on the service. You cant say that you would rather have average games that dont strecth the limits, to great ones that do.
@PiratePete: IGNorant....... wow, never realized that. Im going to start using that from now on
I gave up on ign a long time ago, now, and only check their stuff out of curiosity some times, rather than as a purchasing guide.
@Wiiloveit: +1
@Wiiguy: YEAH! Like I keep saying, with all their experience with Online Play, now, the next Mario Party entry is MUCH more likely to incorporate DLC or Online Play!
@Popyman: Indeed. I respect them more now also. From the very beginning, I could sense that about them so when they were behind Onslaught, I was taken aback a bit but to hear it from the horse's mouth is both reassuring and comforting.
@Popyman - No one has even come close to stretching the limits of the WiiWare service. Games like Onslaught, Mega Man 9, and World of Goo are excellent at pushing the boundaries, but the limits are still off on the horizon.
So why do so many devs complain then? The short answer is that complaining is easier than working within the limitations. Why do something different than you've done it before?
The long answer is that it's a combination of fiscal sense and lack of expertise. The better developers (e.g. Hudson) want a game completed on a reasonable budget. They're not trying to create the next megahit title, just a series of games that will turn a decent profit.
On the other hand, you have developers who are more artistically inclined than technologically inclined. They see hard limitations rather than challenges. Those limitations cramp their style and result in more half-hearted efforts.
The ideal situation is to have a good blend of technology and artistry. With the right people working together, incredible things are possible inside 40 MB. (And I should know. I was the 2004 winner of the Java 4K game programming contest. You wouldn't believe what can be done with only 4096 bytes. )
So don't sell the service short. I would not be at all surprised if the best is yet to come!
I believe that someday we'll see on Wiiware a Deathmatch FPS game. Hell, I think it's possible to implement Quake 3 arena into the Wiiware service!
... well actually no but you get what I mean, lol.
BigLord, I thought you might appreciate this:
http://www.theprodukkt.com/kkrieger
It's a complete First Person Shooter on the order of Quake 3 (graphically, at least)... in only 96kb!
Of course, there's a variety of technical reasons why we don't see more "small" games like this. The procedural technology is older than sin, but it takes a great deal of time and programmers who know WTF they're doing. In this case, they happened to be demo programmers. (A very special breed indeed!)
The industry is moving toward more procedural content, but most of it is in an attempt to augment games rather than replace their existing artwork. (Which raises the question: is using expensive artists to create generic tile really a good use of their time?) WiiWare games could use the technology, but we'll see if it ever happens.
Another interesting game that uses procedural content is Infinity: Quest for Earth. Thanks to procedural content, they can fit an entire galaxy in the game. Complete with hundreds of billions of worlds, each which can be visited from orbit, all the way down to the surface with no transition artifacts! That right there is the power of procedural content.
Procedural is not just complicated for the system and the developer it's also restrictive. I've seen some descriptions of the dev process for kkrieger and it sounded like everything is pretty much an amalgamation of photoshop filters. Plus to procedurally generate something you need a developer who's capable of programming it in AND create something good looking. The two skills are pretty much opposites, finding anyone capable of pulling that off on a level that would be comparable to the output of someone who only mastered one of the skills is almost impossible and the salaries will have to reflect that.
"Amalgamation of photoshop filters" is not quite the right way to look at it, but it's close. Think of it more like having a record of every modification made to the image, then playing that back instead of having the final product on hand. Costly in time, but the space tradeoffs are tremendous. (This gets into information theory and how time is really another dimension of space, thus you can trade the two off, so on and so forth.)
Effectively, it's a matter of designing logic that produces the results you want. Whether it be a script, a pseudo-random number generator, Perlin noise, constructive solid geometry, or just a bit of fun math you cooked up in your head, it all comes back to bridging that gap between programming and artistry.
(Wavlet compression technology was partly an attempt to genericize some of the principles that makes procedural content so powerful, but I have yet to hear of the research bearing any practical results. )
Don't get me wrong. Procedural generation can be used for just about anything. Some uses are easier than others to develop. For example, you might notice that the stunning architecture of kkrieger works so well because it follows some rather natural mathematical forms. e.g. The spiral walkway. Generating levels like this is certainly feasible and not too tremendously difficult. Especially given how portals are used to clearly define areas in today's 3D engines. Even relatively simple texturing can be worked out by looking no further than your neighborhood ray tracer.
I love this game but I've started noticing a few of the issues with it are stopping me enjoying it quite as much as I could.
They really need to fix the dash for the sequel and speed up the normal movement a bit. It makes it really hard when you are moving too slow during boss battles that you know you need to use the dash but the dash is so unreliable that you just end up getting caught and hit a lot.
A few tweaks for the sequel and this game would be top:
1. Fix the dash, maybe by allowing it to stay on for as long as you hold in the direction or something.
2. Allow the player to use a button to reload if they choose.
3. Make the HUD easier to actually see. I can't see the map very clearly on my 28 inch SDTV and the part that shows you your weapons and grenades etc is almost impossible to read at all.
4. Make the player move a little faster in general, especially when you are pushing fully on the control stick.
Also, just to add, I think the reason this game just works and is just great fun, despite it's simplicity, is actually because of it's simplicity. It's like playing Doom vs something like Bioshock or something like that. One game is pure arcade fun imo and even though the other has more depth, a bigger deeper story, a huge budget, larger levels and so on, imo it simply isn't anywhere near as much fun in the end because Doom does less but what it does it quite simply does better imo.
There are different styles of FPS games and I love ones that are like Doom or Goldeneye where it's just about shooting lots of things until they die (Goldeneye has a bit more to it than that but it doesn't get caught up in unecessary story or dialog etc and everything feels very arcadey and fun, and importantly the controls are also kept relatively simple and intuitive). No deep meaning behind everything or long cutscenes explaining it all to you or drawn out dialog etc. No overly complicated controls or level designs etc. Just lots of baddies and lots of bullets.
FUN!
Note: I've just noticed that it's actually easier to see the HUD details in the screens that it is on my tv in real life!
Kirk you really need to fix that TV of yours lol.
and...
1. You can't do that, because you can only do 3 dashes, at the third dash the character gets tired and acts like it just fell of a cliff (the screen gets all "dirty" and stuff)...
2. Most FPSs for the Wii use the waggle to reload, I think it's logical... that's like the other guy who asked to have Gamecube controller support, lol. But that's my opinion.
3. I have no trouble at all seeing both the HUD and the minimap. Hey, the minimap has even saved my bacon tons of times
4. With that one I agree lol, SPECIALLY when riding the BKD Jeep. I mean, wtf you can move faster without being on the jeep.
Quake 3 arena has procedural coding? Wow o_O
Oh, I thought that dark screen thing was a clipping error with the ground that you get caught on a polygon edge or something.
Q3A had curved surfaces, it's simply an LOD measure. By saying "this is an arc" it's easier to reduce or increase the vertex count without altering the shape too much, with predesigned vertices you can only remove ones that are already there and with a regular shape like a curve that means you can only decrease the detail by halving the number of vertices, not smoothly reducing the number. It's a higher order surface, not what people mean when talking about procedural generation and pointing at kkrieger.
Pro-level texturing often involves parts of photos that get used as overlays, TONS of brush strokes, etc, I'm not sure how much you'd save by storing the generating information. Plus judging by how slow some simple brush strokes are in Photoshop it's not going to be quick to replay a pro-level texture making process. Never mind that the unpacking requires some SERIOUS system memory (kkrieger put something like 200MB into the RAM and that's for half a level) which you don't have on an embedded system.
Procedural generation is currently used pretty much only for generating variations on common objects, usually using components made by hand and then glued together differently for each instance of the object (e.g. so different trees look different). It's used for random variety but not for saving space.
Well, if you want some form of space saving generation look at the NES, games like Zelda and Metroid didn't store full level maps, they only stored column codes and room codes that then resolved into different predefined batches of tiles. The result is that the level design is repetitive as hell.
>Q3A had curved surfaces, it's simply an LOD measure.
I wasn't referring to curved surfaces. I was referring to the pathways and the architecture. There's some very nice curves used to create impressive looking architecture like a spiral staircase with a vaulted ceiling. Such a pathway is mathematically easy to create, but provides impressive looking results.
> Pro-level texturing often involves parts of photos that get used as overlays,
Purely mathematical texturing predates photographic manipulation by quite a few years. Simply take a noise generator, attach a pseudo-random number generator, then adjust the parameters until you obtain the look you want. Wood, steel, marble, clouds and a variety of other surfaces are easy to create this way. Such noise generation is a very common step in texture creation (especially for ray tracers), even if artists don't always think of it that way. e.g. I can create brushed steel by inserting points of noise into a gray background, embossing them, then motion blurring them to create the look of a brush stroke. Or I can use the "plasma" filter (Perlin Noise) with a blue background and white filter to create realistic looking clouds. So on an so forth.
Manipulating photographs is often easier, but you pay for the ease of texture development with disk space. Which is a no-no for something like WiiWare. Ergo, the advantages of this scheme disappear due to the technical limitations of the platform.
> it's not going to be quick to replay a pro-level texture making process
No one said it was. Kkrieger takes quite a bit of time to unpack the textures while loading. As I said previously, it's a space/time tradeoff. You can save space in three dimensions by projecting the information out into the fourth. Generally speaking, the more savings in three dimensions, the more the cost in the fourth. This is somewhat offset by how FAST today's processors are. (Including the Wii.) In fact, real-time procedural is a very interesting method of making use of pixel shaders to do extremely expensive calculations on an as-needed basis. This is what Infinity does for planetary terrain. The GPUs of today often have exceptional computational power that is not always used to its fullest potential. Shifting the cost to the GPU can allow a game to create simple noise filters in real time (e.g. marble that never pixelates no matter how close you get) that offset some of the quality loss of a more professional texture OR "streaming" textures that are generated in the background to be used as needed. (The latter is the approach used by Infinity.)
The Wii's TEV units are very capable and should be capable of at least doing noise generated texturing. My memory is a bit fuzzy on the operating of the Wii's GPU, but I recall there was some sort of hard wiring into the framebuffer that made the latter option infeasible. So I'll grant there are some serious limitations to consider.
> [Procedural generation is] used for random variety but not for saving space.
Nonsense. It's very usable for both. RoboBlitz, for example, did EXACTLY what we're talking about. i.e. Used procedural generation to create a smaller download file for XBox Live. Just Cause used procedural generation to create a game world too massive to hand architect. Left 4 Dead uses procedurally generated events to give more depth to the narrative than could be hand written into the game. And those are just a few uses.
Of course, it would probably help if I better defined what "procedural generation" means. Very simply, procedural generation refers to ANYTHING generated programatically. If you've ever used circles, gradients, and boxes to "draw" a sprite, you've done procedural generation. If you've ever written a maze generation algorithm, you've done procedural generation. If you've ever created images from Photoshop filters, then you've done procedural generation.
The key for video games is to do this in both an interesting and useful manner. The first thing that programmers need to remember is that completely random scenes are ugly and boring. So instead, they need to add constraints. e.g. Let's say we're making levels for an FPS. We notice that we can divide the various portal segments into "hallway", "entranceway", "indoor arena", "pit", "exit", "courtyard arena", etc. We know that there needs to be an entrance, an exit, between 1-5 arenas, and a path through the level. Levels break up into types of "multilevel buildings", "single level buildings", "outdoor", etc. So we fire up our psuedo-random number generator and write an algo like this:
1. Generate a number modulo 4 + 1. This is the number of arenas.
2. For each arena, generate a number modulo NUM_ARENAS to identify the type.
3. Generate a number modulo NUM_LEVEL_TYPES to determine the level type.
4. If indoor level type, loop through the approximate portions of the "building" to be filled, pulling each arena from the list using a generated value. Continue until all arenas have been placed.
5. If outdoor level, place each area as a separate building using generated coordinates modulo level size. Collisions should be discarded and generated again.
6. If indoor level, generate hallways between arenas. Curved hallways can follow beizer paths.
7. If outdoor level, generate fencing and walls to assure a pathway from one arena to the next. (See maze algorithms.)
8. Attach an entrance point and exit point to the level. If more than one type of entrance point or exit point is available, generate a number to choose the space.
9. Tada!
The key here is the use of a psuedo-random number generator. Since PRNGs work off a specific seed, entire levels can be stored as something as small as a four byte number. The catch is that the dev team may spend some time running through permutations to find the levels they like best. Or they may tweak the parameters of the algorithm until they obtain results that fit their idea of how levels should be organized. In this way, the procedural generator unfolds a simple number into a very complex, yet usable structure.
I won't even try to describe an algo to create the interiors of the spaces, but it's similarly all about the algorithm and the constraints of the algorithm. Pre-fabbed pieces can be part of the generator to ensure a certain level of artistry.
> Well, if you want some form of space saving generation look at the
> NES, games like Zelda and Metroid didn't store full level maps, they
> only stored column codes and room codes that then resolved into
> different predefined batches of tiles.
You're describing a lookup table, not generated content. (Procedural generation would be an algorithm that generates such a lookup table, not the table itself.) Such games are easy to create procedural content for (e.g. look at Toe Jam & Earl), but don't always gain much for it. The tile designs were repetitive partly due to the memory constraints of the systems. When you're dealing with sprite hardware, you tend to have what's in ROM and that's it. Your RAM is a highly limited resource used only for game logic.
Of course, one could have included a special chip that generated ROM values, but one would have to question whether or not the hardware cost would be worth it. Especially when ROM chips fell in price as demand ramped up. For 2D data, lookup tables were sufficient for a one player game. Limiting the size of the game world was even preferable as players were often turned off by worlds in which they could easily get lost. There were a few examples of procedural generation from that era (e.g. The Sentinal), but programmers rarely felt that their tools were insufficient for their needs.
Getting back to how this relates to WiiWare, keep in mind that WiiWare has 40MB to work with. This is a heck of a lot more than the 96kb of kkrieger and a heck of a lot less than your average Wii FPS. A middle ground does exist whereby procedural content can be used to significantly reduce the size of a title without going to the extremes seen in tech demos like kkrieger. Thus my point is that the 40MB boundary is not as constraining as one might think. Don't even get me started on how much better developers can do on 2D image compression with only the most minor amount of dithering...
Apologies for writing a book here. I was trying to avoid going down that path by speaking in general terms, but... well... we got into the specifics.
@BigLord
Obviously that's the way it works in the game but my suggestion is not to use that way and actually make it useful and fun
I still think using a button to reload makes much more sense and will simply feel better for most people and it will definitely work more reliably. I'm sure when The Conduit comes out that most people will put the reload on a button. I know I will. I REALLY don't like having to waggle to reload, although in this game it actually works pretty well I must admit, but still...I'd rather use a button.
Well clearly my TV is rubbish then because everything is just a wii bit blurry (see what I did there) and hard to see.
Wow! kkrieger is very very cool indeed for what it is. The lighting is miles ahead of any Wii game I have seen.
Now I know Wii can do lighting like that so why is no developer doing it.
> Now I know Wii can do lighting like that so why is no developer doing it.
The TEV system is a comparable, but fundamentally different technology from programmable shaders. 95% of the technological development in the industry has gone into the standard programmable shader technologies seen in NVidia and ATI cards.
This means that there's virtually no off-the-shelf solution available for the Wii. A developer who wants to create a game with awesome lighting effects has to roll his own. That can be a somewhat daunting prospect given the amount of time and effort that goes into engines like Doom3 and Unreal [whateverversiontheyareon].
My hope is that Quantum3 from High Voltage will help out here. The engine isn't quite the latest engine from Epic, but it does contain some nice dynamic lighting and texture effects. We can probably live without the shiny meat cubes and height-mapped textures.
I know I can certainly live without the meat cubes that's for sure.
Would be nice to have the lighting though
@KnucklesSonic 8 - Did you get this?
Wow, the talk got very technical. Interesting though. Hope some WW devs take notes.
Show Comments
Leave A Comment
Hold on there, you need to login to post a comment...