Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411419 Posts in 69363 Topics- by 58416 Members - Latest Member: timothy feriandy

April 17, 2024, 09:16:14 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsShoptown Dooter: a Deep PVP party game!
Pages: [1] 2 3
Print
Author Topic: Shoptown Dooter: a Deep PVP party game!  (Read 5904 times)
Abdurrahman
Level 0
**


Excellent Falafel eater


View Profile
« on: September 23, 2022, 02:05:44 PM »


About the game
Shoptown dooter is a dual-stick shooter local multiplayer "party" game that aims to have a significant amount of depth and tactical sense without lacking the fun of playing with your casual neighbor.

Watch my journey on youtube:




latest episode



 
Main Mechanics
Shoot - Dash - break walls - use items - charge weapons


Charge Weapons: charged-weapons have different effects on charge. The combat shotgun is the simplest:


A Deep Party Game? (Motivation)
Party games are known for lacking depth. This is not bad, because I love party games; I played so many of them. And while these games are perfect for one night of fun. (I usually play them a few times with different people, rarely again with the same people). In my opinion, you get bored quickly of them even though they provide a tremendous amount of fun at first. Some people play these games for an extended period, but you can see the big difference in average playing time between highly competitive games and party games.
 
I'm aiming to solve this; I want our game to be played with your younger brother and sister while still being fun against a pro. I know this might be difficult to achieve, but I think it is possible. And If we fail at that, we will still have a fun/chaotic party game to play.

Some party games have more depth (like speed runners, worms, etc.), but it becomes tough to play vs. pros. How do I plan to solve this? More on that later.
 
Team of brothers!
How rare is it that the entire team is made of 3 siblings? I'm not sure, but I'm guessing pretty rare.
Working with my brothers is a blessing, but it also has its disadvantages.
While everyone can participate in every aspect of the game (for example, all of us do code), we distributed the work by our primary roles.
 
Abdurrahman Khallouf: Game Design/ Production/ Marketing.
Hassan Khallouf: Tech Lead/ Developer.
Alaa Khallouf: Concept/Technical Artist.
Alaa (our youngest) is the one who started the game as a graduation project, believe it or not.

Tools
Unity - Blender - Plastik - Codecks - Discord

Can we succeed in our first game?
I know how hard it is to launch your own game; I've been in this industry for years. I've been working at gaming companies for the last six years. I've failed many times at bringing my own projects to life before. But I think we got the scope under control. This is the first time I have shared my journey; hopefully, your support will encourage us to continue!



You can try the free Beta as soon as it's ready. Join Our Mailing List!
Only exclusive content and secrets - no spam!

« Last Edit: March 22, 2024, 02:11:36 PM by Abdurrahman » Logged

Hey everyone! I am making a competitve party top down shooter. kindly check my devlog:
https://forums.tigsource.com/index.php?topic=73729.0
Abdurrahman
Level 0
**


Excellent Falafel eater


View Profile
« Reply #1 on: September 26, 2022, 12:50:04 PM »

Weapons
Unity's Technical System
skip this part if you are not interested in technicalities.
We approached weapons cautiously since they were the most critical part of the game.


Our main programmer made an excellent weapons system to support our needs. It has these settings:




As you can see, there is an area to add a modifier to a projectile. Basically, projectiles contain "LEGO pieces" we call modifiers which can be added to a projectile. For example, the revolver has bounce + DieOnSurface modifiers. Where plasma shots have those but also have a pierce modifier that applies only to players. So it bounces off walls but goes through flesh. (you can see how that works in mages)

There were many ways to approach this, but we used scriptable objects as our modifiers. However, some modifiers have data to be saved; as you may already know, scriptable objects are shared objects, and this data should be saved per bullet. The bounce modifier, for example, has a number for bounces. And it needs to be saved per shot. The scriptable object has a dictionary containing all the bullets (a list of bullets) to keep track of how many remaining bounces for each bullet.

This way is more efficient than having a mono behavior per modifier. It also led to a cleaner inspector since we have a small area where you can throw your LEGO pieces in; instead of having many scripts attached.

Here is a code for reference:
Code:
public abstract class ProjectileModifierWithData<T> : ProjectileModifier
{
    private IDictionary<int, T> shotsData;

    public void SaveData(Projectile projectile, T data)
    {
        shotsData ??= new Dictionary<int, T>();
        shotsData[projectile.GetInstanceID()] = data;
    }

    protected T GetData(Projectile projectile)
    {
        if (shotsData != null && shotsData.ContainsKey(projectile.GetInstanceID()))
            return shotsData[projectile.GetInstanceID()];
        return default;
    }
}

Weapons Philosophy

For now, we have 11 weapons, and we do not plan to add more (for a long time). And even when we do, it will be weapons tied to unique mechanics. as this is a competitive game, we want the players to be very familiar with how to use each gun strategically.

While play testing, I found the 3 most fun strategies in this game.
1. Play cowardly around covers, block entrances with plasma shots and mines.
2. Use hit and run to get closer to your enemies and finish them with a high-damage short-range weapon.
3. Suppress your enemies and blow up their covers while laughing like a psycho.

And we wanted to capitalize on that (while removing some of the not-fun) strategies that I might talk about later.

So I broke down my weapons into three main categories:

Assault: to support the suppression-aggressive types.
Safe: to support the tactical types.
Corner: to support the hit-and-run types.

Weapons Show Case
Art is not done yet.
So far, we have made these weapons:
Basic: Pistol



Assault: Machine Gun, Combat Shotgun, Sawed-off Shotgun, and Bazooka. We can also add the Wrench here.



Safe: Anti-Armor Gun, Energy Sniper



Corner: Revolver, Plasma Rifle, Mine Launcher



Charging Shots
I'll let the pics speak for themselves.



And by the way, I need an idea for charging the mine launcher. Maybe other weapons as well. Feel free to contribute.
Logged

Hey everyone! I am making a competitve party top down shooter. kindly check my devlog:
https://forums.tigsource.com/index.php?topic=73729.0
mobilelast
Level 2
**


View Profile WWW
« Reply #2 on: September 27, 2022, 12:18:28 PM »

Looks very good and interesting, there’s never enough good party games. It’s also nice that you share your technical experiences.

Are you planning a cooperational mode against the computer? My best party-gaming experiences have been when everyone works as a team against a common opponent. Also, losing must be somehow rewarding, showy, absurd and fun.
Logged

Avaruustaistelupeli (ATP) - a space combat game
- Free download from itch.io or IndieDB
- Dev diary here
kason.xiv
Level 0
***


View Profile
« Reply #3 on: September 28, 2022, 12:56:50 PM »

Looks fun :] planning to release on switch?
Logged
Abdurrahman
Level 0
**


Excellent Falafel eater


View Profile
« Reply #4 on: September 29, 2022, 07:07:32 AM »

Looks very good and interesting, there’s never enough good party games. It’s also nice that you share your technical experiences.

Are you planning a cooperational mode against the computer? My best party-gaming experiences have been when everyone works as a team against a common opponent. Also, losing must be somehow rewarding, showy, absurd and fun.

Thanks!
We are planning to have a co-op mode. At least a 2v2 mode where you play against AI. but there could even be a fully dedicated mode for co-op. but we don't want any half-cooked features. So if we run out of time, maybe we will let it go or do it post-release.

Looks fun :] planning to release on switch?

We will definitely look for console releases if we have a successful release on steam.
« Last Edit: September 29, 2022, 07:40:28 AM by Abdurrahman » Logged

Hey everyone! I am making a competitve party top down shooter. kindly check my devlog:
https://forums.tigsource.com/index.php?topic=73729.0
Abdurrahman
Level 0
**


Excellent Falafel eater


View Profile
« Reply #5 on: September 30, 2022, 03:11:40 AM »

Art is not our strongest suit, I would say. While we have a fantastic concept artist, he is still a beginner at making 3D art. both our artist and our main programmer are good at modeling. But texturing and directing the entire scene to look good will be a challenge.


This is how the game looks right now. But this is just an abstract level to test gameplay, not art.

We started going through iterations for level concepts.
Based on our lore and general art direction. We decided to have three main themes:
The Shoptown.
The Jungle Island.
The Crystal mines.

I will talk about why we picked these themes later. But for now, I want to show you a few concepts we've been working on. (mostly the shoptown)



We started with improving what we currently have.





Some colorless detailed environment.



Finally, we added some colors.

Although this is not final, and the post-apocalyptic features don't show. But we will start with modeling. I want something beautiful to present for devlogs and demos while the concept and art evolve.

Technical Requirements

Does the concept have technical requirements as well? of course it does!
It is a requirement to make the whole level or (arena) viewed on one screen. Our game spawns weapons and items across the arena, and we want the players to know what spawned and where.

We don't want to mess around with zooming that allows missing vital strategic information. Cam movements could be excellent for taste if done subtly. Or for other game modes.
Logged

Hey everyone! I am making a competitve party top down shooter. kindly check my devlog:
https://forums.tigsource.com/index.php?topic=73729.0
Alain
Level 10
*****



View Profile WWW
« Reply #6 on: October 03, 2022, 12:46:23 AM »

Cool, I like the concept art! The verticality in the train cart level is a nice touch. Keep up the good work!
Logged

Abdurrahman
Level 0
**


Excellent Falafel eater


View Profile
« Reply #7 on: October 07, 2022, 04:45:04 AM »

Cool, I like the concept art! The verticality in the train cart level is a nice touch. Keep up the good work!

In shoptwon dooters.. sorry  Cheesy top-down shooters, you rarely see verticality. We intentionally want to add some "depth" to make beautiful sceneries.
Logged

Hey everyone! I am making a competitve party top down shooter. kindly check my devlog:
https://forums.tigsource.com/index.php?topic=73729.0
Hassan Khallouf
Level 0
*


View Profile
« Reply #8 on: October 25, 2022, 01:40:42 PM »

Hello everyone!

My name is Hassan and I'm the technical lead for this project.
I will try to share few issues we had to deal with from the technical side, this might be more relevant to Unity users, but I guess a lot of it is a general Software Architecture issues.

Technical Debt!
As mentioned in a previous log post, this project was started as a graduation project, and if you have been there, you would know quality of code would be in the bottom of the priority list, IF it made it to the list  Shrug

The next big task I was trying to tackle was making an AI for the game, the code for controlling the player was all crammed in one file called PlayerController, it handels taking input from the controller and make sure the player can move/dash/shoot or whatever action is taken before giving the action to the player class, and sometimes it handles part of the logic as well! And yeah, the animation logic was based on the input as well, so throw that into the mix.

this made the task of making AI very difficult, I needed to deal with an API of the player, general functions like Move(), Shoot(), Dash(), it doesn’t matter who is calling the function, it could be a controller, AI, or even a testing component.

so first order of business was to clean this, now the PlayerController class does nothing aside from responding to input from hardware and propagates the message to the proper behavior, we now have Movement behavior, shooting behavior, animation logic is also separate in a class!



Implement the AI
We flirted with the idea of doing machine learning agent but I learned from previous experience when to stop when I have a stupid idea or something that is interesting but it’s bit dreamy and out of our league, I can do the machine learning part, but it will take far too long for a game that is supposed to be played with friends and the AI is only a complementary part of the game.

So off we go to go-old fashion decision tree, I will make another post about the AI when it has interesting behavior and it is able to win against me for a single match at least.  Well, hello there!

For now all what I’m going to share is how good the structure is, all what I need to is to throw a component called Brain on the exact same player prefab we are using and it will start acting and moving and come to life!, but all what it does now is move north – how exotic!  My Word!
I will continue sharing updates about the AI soon hopefully.


« Last Edit: October 26, 2022, 12:26:58 PM by Hassan Khallouf » Logged
mobilelast
Level 2
**


View Profile WWW
« Reply #9 on: October 28, 2022, 12:45:45 AM »

The first loss to the AI you’ve made yourself is one of the most rewarding feelings a programmer can have.
Logged

Avaruustaistelupeli (ATP) - a space combat game
- Free download from itch.io or IndieDB
- Dev diary here
Abdurrahman
Level 0
**


Excellent Falafel eater


View Profile
« Reply #10 on: January 07, 2023, 12:17:25 PM »

a Major Setback

It's been a while since we updated the project. We were bottle-necked by design, and the new features are code without anything to show. Luckily it is good news! It is personal, so we will skip this part.

When the design stopped, the motivation started to drop, as we felt we were not progressing in a way we could "sense."

The Football Worldcup came along during this period, so we started following the event. We like sports, but we don't have time to watch them. The world cup was the perfect excuse to take a break after 2-3 months of heavy work. So we took it.


Our designer is back now, and the weapons, items, and other features will see the light!

The new levels are a work in progress, but our concept art is turning into reality:


Gameplay Improvements
We've worked hard the last few days and are officially back to the project. We tested the game, we managed to turn the features we made fun by minor changes, and I wrote this on our discord:

Quote
Wow, even with someone with my experience, I've learned much today! Yesterday, we had a little bit of fun, but the game was meh. We kept iterating and fixing what we could improve. Things like damage of barrels, speed of throw, explosions radius, AA gun powerful shards, tweaks on mine launcher and plasma. Etc.
The game became fun again, and we played "just one more round" as we did before, and we were loud, excited, and laughing.

It was a friendly reminder of why I am making this game. And I am very encouraged to complete our vision.

More updates are coming soon!
Logged

Hey everyone! I am making a competitve party top down shooter. kindly check my devlog:
https://forums.tigsource.com/index.php?topic=73729.0
Abdurrahman
Level 0
**


Excellent Falafel eater


View Profile
« Reply #11 on: January 21, 2023, 10:07:31 AM »

Items

Items Philosophy

Just like weapons, all items are built around using covers to your advantage; moving around the covers is the main thing we're focused on.

Given our close relationship with covers (that are mostly wooden boxes right now), I gave creating items 2 main rules:

  • 1. All items can be used offensively (to break covers or flush out your opponents) or defensively (to hold an aggressive attacker away while shooting safely)
  • 2. All items can be used on a wall(cover) for modified usage.
  • 3. All items can backfire/be used against you.


We will have a limited number of items because I want the player to quickly know all items at heart. The items should be dynamic enough to create exciting scenarios, and that can be done easily if your items(or weapons) are tied into your core mechanics.

With that in mind, I found myself creating two categories of items:
Choke point Items help you defend or flush out an area.
Movement Items modify your movement to escape or pass through a choke point. (we created only one so far; the teleporter)


Items Show Case
Note: not all items have a wall use right now.
Note 2: Effects are far from final.

Explosive Barrel


Use: damage opponents and break walls!


Toxic Barrel


Use: Fill an area with a toxic cloud. Great to flush out opponents or keep them away.


Shield

Use: Create a shield that allows bullets in one-way.

Wall Use: increase the HP of the wall.


Fire Amplifier


Use: Create a shield that will make your bullets do double damage.

Wall Use: Create a firewall that spits fire bullets when shot.


Tornado in a Jar


Use: Create a strong tornado pulling everyone in.

Wall Use: On breaking the wall, the tornado will move in the direction that was shot in.


Mine

Use: permanently stays on the ground. Explode if triggered by close movement, shooting additional bullets on explosion.


Teleporter

Use: Teleport

Wall Use: Create a teleporting wall, allowing players to teleport a small distance on touch.

--------------------------------
More are coming later, but these items are sufficient to test the fun of the game.
This show case will be updated.
Logged

Hey everyone! I am making a competitve party top down shooter. kindly check my devlog:
https://forums.tigsource.com/index.php?topic=73729.0
mobilelast
Level 2
**


View Profile WWW
« Reply #12 on: February 02, 2023, 05:16:46 PM »

That’s a creative and well visualized set of features.

I have many similar ones in my project. One I’ve found useful is a force field or shield that reflects bullets back towards the shooter. It adds a danger factor to shooting, which can make a good tactical twist.
Logged

Avaruustaistelupeli (ATP) - a space combat game
- Free download from itch.io or IndieDB
- Dev diary here
Abdurrahman
Level 0
**


Excellent Falafel eater


View Profile
« Reply #13 on: February 03, 2023, 09:28:17 AM »

That’s a creative and well visualized set of features.

I have many similar ones in my project. One I’ve found useful is a force field or shield that reflects bullets back towards the shooter. It adds a danger factor to shooting, which can make a good tactical twist.

Nice eye! We were thinking about adding a reflect mechanic to the shield. You managed to think it without playing the game.
I will look up your project  Wink
Logged

Hey everyone! I am making a competitve party top down shooter. kindly check my devlog:
https://forums.tigsource.com/index.php?topic=73729.0
Abdurrahman
Level 0
**


Excellent Falafel eater


View Profile
« Reply #14 on: April 29, 2023, 07:18:31 AM »

a Quick Update!



We've been working on various things, I've been busy working and not updating the devlog, but I should log out progress. I will log details about the following soon.

Here are the new things we've been working on and now completed and tested:

The Pit (Sewers)

The Sewer in the middle of the map allows you to drop your weapon, and you will carry it on to the next round. Giving you a significant advantage!



Weapons/Items effects

We changed most of the effects; this includes using the Unity particle system + getting/crafting unique sounds.

Other Visuals
we focused on boxes (walls) because they are a fundamental part of the game. So we created a nice set of new walls, each with damage levels.



Mushrooms (Regrowable Walls)
This experimental Wall will re-create itself automatically after a duration.



Team Mode
I believe this mode is more fun than the free-for-all. And many of the features were made with this mode in mind. It is mainly used to play 2V2, but you can play it 2V1 or even 3V1 if you feel brave.



Online Multiplayer
This is obviously will keep going until the last day of development. But our Tech Lead engineered a peer-to-peer solution without creating dirt in our offline code (which is a miracle)



Finally, we are happy to announce that we have reached the 40% mark! Hopefully, we are not underestimating the time needed very much.

==>



What is next?
Our next (and last) features will be

Coins: tokens you get by kills (mostly), and you can spend to improve your gear
Mechs: Heavy machines you can ride to destroy your opponents!
Also, we want to release a demo very soon!
Wish us luck!
« Last Edit: April 29, 2023, 07:32:24 AM by Abdurrahman » Logged

Hey everyone! I am making a competitve party top down shooter. kindly check my devlog:
https://forums.tigsource.com/index.php?topic=73729.0
Abdurrahman
Level 0
**


Excellent Falafel eater


View Profile
« Reply #15 on: May 04, 2023, 09:39:02 AM »

Cheating Mechanics

I will allow players to cheat in my game! Players can take some weapons (and items) to the next round with them. Originally the idea was: a character would walk across the map, and you could hand him your weapon, then he would give it to you in the next round.

But I also wanted something to target the players toward the center (because it creates more tension); that is why the first weapon will always spawn in the middle. That wasn't enough; I wanted more without changing our death match mode into King of the Hill mode, so I introduced the sewer escape mechanic!

The sewer in the middle of every map is an interactable area that allows one of two interactions:

1. Dropping a weapon: The weapon dropped will be carried to the next round, giving an excellent starting advantage.
2. Escaping the arena: You will lose this round, but You can keep a weapon or an item with you, and you deny the opponents to gain a coin when they kill you.

Both will need to hold a button for 2 seconds, Putting you in grave danger.


dropping a weapon into the pit.

Risk-Reward Situations
We did not implement coins yet, so when testing the game, players did not use the second interaction (obviously), but dropping the weapons created a lot of fun. It added fantastic risk-reward situations, mostly as follows:

Usually, the one who goes for a drop is the winning guy; this will give the weaker player(s) a chance to flip the odds by attacking the middle with items and weapons, so if you are not careful, you might lose a lot of health, and the weaker guy now have equal health plus a gun!

Other times, desperate players go for the drop in the middle, exposing themselves as a target, hoping to drop the weapon even if they die, sacrificing this round to get an advantage in the next one.


I also plan to make the center attractive in other ways, but that will come later.
note: we did not work on the visuals for this feature yet.
« Last Edit: May 04, 2023, 09:56:39 AM by Abdurrahman » Logged

Hey everyone! I am making a competitve party top down shooter. kindly check my devlog:
https://forums.tigsource.com/index.php?topic=73729.0
Abdurrahman
Level 0
**


Excellent Falafel eater


View Profile
« Reply #16 on: May 06, 2023, 05:53:35 AM »

Sometimes, a little bit of work results in a massive impact!
That is what I think of Team Mode. Although it is a no-brainer to try (since many party PVP games have a team mode), I believe that our game benefits more from this mode because it is very positional/tactical.

For example, Stickman: the game doesn't have a team mode, and for a good reason, it won't be more fun with such a mode.

As expected, the initial playtesting showed us that it is more fun than the free-for-all mode, especially for more serious gamers.

We made a simple change in the UI. For now, you can press (select) on your controller to switch to team mode, but in the future, I want to emphasize it more and have a separate menu option.



In-game, we made different colors for health bars. We made spawning positions that make sense (each team will spawn on a side, even if you plat 1V3)


And changed the winning condition; the game calculates team scores separately.

Thats it! Few changes, and we have a mode that feels juicy and fresh!


We've been working on the coins feature, which I will explain soon (basically, you get coins on kills that you use for items). But in team mode, your friend gains a coin while you get two.

Also, to balance things out when playing an unfair match (1v2 or 1v3), The single player gets much more coins.

Logged

Hey everyone! I am making a competitve party top down shooter. kindly check my devlog:
https://forums.tigsource.com/index.php?topic=73729.0
Abdurrahman
Level 0
**


Excellent Falafel eater


View Profile
« Reply #17 on: May 11, 2023, 11:20:57 AM »

Ahhh effects!
Working on effects makes you feel you are delaying real work... but as we think the game is solid enough and reached a state where it became really fun, we wanted to have some polish before sharing the first demo. It took a lot of time, but it was definitely worth it!

I'll share some of the effects we've been working on. (for a LONG time  Addicted)
Let the pictures speak for themselves.

Bullets

---OLD---------------------------------------------------------NEW---
---

AA Gun
We have an entrance + exit effect, and shards look unique (not just bullets)

---OLD---------------------------------------------------------NEW---


---

We also changed the bullet itself.



Plazma
The new effect has a direction depending on the bounce direction

---OLD---------------------------------------------------------NEW---
---

Barrel

---OLD---------------------------------------------------------NEW---
---

Shotgun
Hitting for shotguns changed, + we added smoke!

---OLD---------------------------------------------------------NEW---
---

Teleporter

---OLD----------------------------------------------------------------------------------------NEW---
---

Teleporter Wall

---OLD---------------------------------------------------------NEW---
---



Shield
It used to appear with no cool effect.

---OLD---------------------------------------------------------NEW---
---

There is also the fire shield.


Energy Sniper
Energy sniper used to be just a normal bullet; it was confusing
---OLD---------------------------------------------------------NEW---
---

We also have new functionalities for that weapon (with less charge, you get slower, weaker, but more bullets)
---

Shield On Wall

---OLD---------------------------------------------------------NEW---
---

We created a similar one for FireWall (fire shield on the wall)


Wall Break

---OLD---------------------------------------------------------NEW---
---

Mine Launcher Explosion

---OLD---------------------------------------------------------NEW---
---
Logged

Hey everyone! I am making a competitve party top down shooter. kindly check my devlog:
https://forums.tigsource.com/index.php?topic=73729.0
Abdurrahman
Level 0
**


Excellent Falafel eater


View Profile
« Reply #18 on: May 22, 2023, 02:06:30 PM »

We are working on improving the art of our game characters. And They are coming nicely.




We will talk about our concept art, stay tuned!
Logged

Hey everyone! I am making a competitve party top down shooter. kindly check my devlog:
https://forums.tigsource.com/index.php?topic=73729.0
Abdurrahman
Level 0
**


Excellent Falafel eater


View Profile
« Reply #19 on: June 04, 2023, 12:26:52 PM »

Hello everyone, I'm thrilled to announce our newest feature added to the game: Mechs!



Mechs are amazing machines that you can take over or buy between rounds. They are stronger than the standard weapons and they have their own special abilities that can give you an edge in the battlefield. For instance, some mechs have the Rage ability that makes them run faster and deal more damage, some mechs can fly over water and other hazardous areas that would normally kill you, and some mechs can even switch to different weapons.

But don't fret, mechs are not meant to be played every round. The player should use them wisely when needed. Mechs have limited usage due to their expensive price (or rare events), and they can be harmed by enemy fire. You also have to be alert not to let your opponent's snatch your mechs. Yes, you heard me right. Later we want to introduce hijacking mechs, ways to steal your opponents' mechs by hacking them or using special devices. This is part of our philosophy that anything in the game can backfire.

But before we go on and create the models needed for the feature, we want to fix the silly bugs such as your ability to ride multiple mechs at the same time (and tons of other bugs and balancing issues).




I will update you soon on the process!

Logged

Hey everyone! I am making a competitve party top down shooter. kindly check my devlog:
https://forums.tigsource.com/index.php?topic=73729.0
Pages: [1] 2 3
Print
Jump to:  

Theme orange-lt created by panic