Jase00's Recent Forum Activity

  • > I think currently, the events will check one of the enemies variables, then apply the outcome to all enemies

    Jase00 No, I don't think so. The events on that screenshot should pick all instances with move="right", then all instance with move="left". So it's unlikely that "for each" will help. But the order of events and actions definitely needs fixing.

    dop2000 I'm not too sure about the order of events being the cause, it's not the most optimised but it looks functional to me visually, and OP said it does work with 1 instance of the enemy.

    I do agree that the "Set Maximum Speed" is misplaced and must be run once, though!

    I suggested the ForEach idea because, personally, whenever I have a system working perfectly with 1 instance, but it breaks when I add more instances (just like OP's situation), then I find a "For Each" condition fixes everything.

  • Hello!

    My apologies if this is a wasted read, as I am unsure about the internal process of the Suggestions platform (Maybe you guys already have a system in place for when and how often to check out the suggestions platform).

    I popped up a suggestion about the Event Sheet View a couple of weeks ago.

    My suggestion, in my opinion, may not be the most overwhelmingly huge feature to add ([*]PLEASE SEE NOTE), but I think it could be very useful for all users when using the Event Sheet View, beginners or advanced users. However, the suggestion only gained a small bit of attention, and may end up buried within a few more weeks. In the few weeks since posting, I find that I wish I had this suggestion implemented on a few occassions, but there's not much else I can do to attract attention to see if it can ever be added. I wonder if this is the case for other suggestions too.

    [*] Note: I completely respect and understand that you are a small team, and that I do not know how C3 is programmed, therefore I could be very wrong about how easy a suggestion is to add. I understand suggestions may or may not be added, I would imagine it is depending on how long it would take to develop, how useful for general users, if it's even feasible for C3 to include, etc.

    I remember years back before I subscribed to C3, the features suggestion platform was added, which was a great idea! But I understand that the current system is possibly biased towards older suggestions that have amassed votes from users over the years, so maybe this has an effect now due to a few years passing? (The "biased" bit being mentioned here, just to clarify).

    One reason why I think the smaller quality-of-life suggestions can end up buried: Voters may not want to spend their votes on small suggestions as they may see more benefit in casting their votes to those larger "Unable to do this in C3 unless you use a third-party plugin" or "impossible to do unless Scirra develops this" type of suggestions.

    Another reason smaller suggestions could end up buried: I imagine most visitors on the Suggestion platform would come across suggestions to vote on by using Trending, Recent, and Popular; I wouldn't have thought that many users would browse each sub-category too often, especially with high number of suggestions such as the Event Sheet View sub-category. Don't get me wrong though, it's great it is categorised like this! And without sub-categories, it would be worse off as everything would be in one big list.

    I was wondering, would there be any way to gain further attention to a suggestion? Maybe a sort of curation system to lessen the burden for Scirra to have to cycle through every suggestion?

    I have no idea how as I've never handled a suggestions plaform before, but I'm thinking when creating suggestions:

    Users could vote out of 5 on some questions such as "Would this be useful for beginners" (1 being no, 5 being definitely useful for beginners), and "Does this seem like a substantial change to C3?" (1 being a seemingly small change to C3, 5 being a massive project in itself to implement).

    (With the above, perhaps not all users, maybe only a hand-picked few users such as forum mods? Or all users with a subscription to C3? And to clarify: this would only be the users opinions; where we would rely on the more technically-minded people that may have a reasonable guess as to whether it would be a tricky feature to implement into Construct 3 or not.)

    With a system like this, perhaps smaller easier-to-implement suggestions, yet beneficial to a lot of users, could end up being seen by the programmers at Scirra, and have more of a chance to end up in the beta's of Construct 3 maybe, which would benefit a lot of users, beginners and advanced users alike.

    If not, is there any other way we could gain more attention to a suggestion? (Without just posting on the General Discussion here on the Forum, otherwise everyone would do this and cause pollution to General Discussion!)

    I will continue to post suggestions, as small as they may be, when I find they could be utilised on multiple occasions for myself, but it would be nice to know that after posting a (hopefully easy-to-implement) suggestion, that it may have a chance to be seen and acknowledged.

    Many thanks for reading!

  • I haven't encountered this myself with C3, but, assuming this is not an unknown bug in C3, and assuming you're on Windows, I've seen this sort of effect happen on other software when available RAM is low.

    If you do not have much available RAM, then depending on the size of your project, you might find it starts closing randomly due to running out of RAM.

    Windows doesn't always warn you about this in my experience too, sometimes it will silently close applications (This has happened to me on different computers too, not just my own!)

    I checked the RAM usage on my small 400 event project:

    RAM when I have C3 open with no project loaded.

    <Compared with>

    RAM when I have C3 open with my project, with the Event List Viewer open.

    This increases my RAM usage by a small 50MB.

    However, if your project had for instance 2000 or more events, all expanded, then this might be higher. (NOTE: I am assuming that events would up the usage, it could also be amount of sprites, image size of sprites etc.)

    It may be worth checking:

    1. How much RAM do you have?
    2. How many events does your project have?
    3. If you work on multiple projects, does C3 crash when you work on a project that is more smaller/less events?
    4. How much RAM does C3 use when you open it without opening your project?
    5. If you open C3 and open your project, how heavy is your RAM usage now?
    6. After using C3 for about 20 minutes of heavy usage, how does your RAM usage look?

    Hope this helps!

  • You might want to add a new event with "For Each (enemies)".

    Then move all the "enemies" events as a sub-event below the "For Each" condition.

    I think currently, the events will check one of the enemies variables, then apply the outcome to all enemies (so suddenly it thinks all enemies are moving "left" even though some are moving "right").

    If you add a For Each command, this will make Construct 3 re-run the same events individually for every enemy that you add.

    I understand you have made a new family as a test to fix the issue you were having, but just to clarify, I would recommend trying to keep all enemy events into 1 family, then you can have the 1 "For each" event with all the AI being sub-events.

    A quick mockup screenshot to demonstrate:

    Hope this helps!

  • Hello!

    Just to warn, Chrome Canary may wipe your local .c3p file if you try to save locally. Make sure to "Download a local copy" before reacting.

    I use my computer minmially and do not use Chome Canary for anything but C3 (no browser extentions at all or anything), but suddenly today, after doing a bit of work, I cannot "Save" to my local computer. When saving, I get "Unable to save project. Try checking you have permission to save in the chosen location. Alternatively, try saving a different way."

    Now, the main worry here, is, my c3p file has been wiped to 0mb, so... C3 has started the save process but couldn't finish it.

    If this happens to you, BE CAREFUL, use the "Download a copy" feature to save your file, and don't close your browser until you do this. If I had closed my browser and opened it again, I would have lost my work. Also, always backup!

    I get the following error. Perhaps a new Canary update has broken something?:

    I downloaded and installed regular chrome and logged in, works fine and saves fine.

    I'm using beta C3 190 if that matters, but I reckon it's Chrome Canary related. Be careful nonetheless!

    Hope this helps.

    -Jase

  • Hello!

    I'm becoming more eager to move from C2 to C3, as I had been playing with the free version and realised how the work flow might not be different at all if I moved right now to C3 (I was happy to discover: Keyboard shortcuts work as expected, CTRL+Mousewheel works without zooming in the actual "browser page", adding C3 as a shortcut and maximising gives me a normal full screen with start bar visible with no address bar or tabs, looks and feels great!)

    Had a few questions:

    1. Can "Remote Preview" be used on an offline LAN network?

    I understand that preview-over-wifi from C2 is no longer a thing, but Remote Preview now exists but I am unable to test this in the free version.

    I read that Remote Preview works over LAN, but does this also mean this feature works offline over LAN?

    Currently I preview my game on my phone often on C2, as my phone and PC is connected to my router, but lets assume my internet was down, would I still be able to speedily preview on my phone like in C2?

    2. How do I use the equivilent of "Fullscreen: Crop" in C3, as this option no longer exists in C3?

    I use "Fullscreen: Crop" on my current C2 project to adapt my project to different phone sizes, I feel like I have a great deal of control using this and then manipulating sprites and objects using the viewport events (On C2, Fullscreen set to "Off" creates an unwanted border on my phone, even if I try to manipulate the canvas/browser size with events).

    3. More mild trivial quesiton, but is there a plugin to get dates/times from the users device? It is the only third party plugin I'm using in my current project, thought I'd quickly ask!

    4. Privacy. I had lightly asked about this in a blog post somewhat recently, and I have read the Privacy policy, but I was curious specifically what degree of information is tracked by Scirra?

    Just to stress, I'm not asking about data that would help circumvent security or piracy.

    To give some specific ideas on what I'm asking, data such as:

    1. Things typed into C3 such as Text, event comments, project titles.

    2. When using Remote Preview, how long do the builds stay on the Scirra servers?

    I'm not inherently opposed to Scirra or companies tracking information, I like knowing I can help and be a statistic for things like "How often is the Multiplayer plugin added to projects" or "How many events used by C3 users" and such, but I would definitly want to opt out of data collection if it is identifiable.

    The next questions are for someone I know who also uses C2 but isn't entirely convinced by C3, so I don't know the exact use cases he intends but I have a general idea and thought I'd ask for him:

    A. Does the Multiplayer plugin work between C2 and C3? (Could a c2 build of a game communicate with a build in C3?).

    B. Can you add multiple "Multiplayer" plugins in a project? Or, if not, can you connect to multiple servers on the one instance?

    I understand that some games (MMO's) have multiple servers to handle different bits, such as a Login Server, World Server, Channel server. I think this is what he intends to use it for.

    C. Can the official plugins be downloaded and modified?

    I found a thread on the forum about this, I totally agree that it's probably better to request the feature change, and bare in mind this isn't a request I'm asking for so I'm not here to discuss "why not!" if we can't, but the baseline question; are we actually able to download the plugins and tinker with them if we for whatever reason wanted to?

    I do know that, in C2, he modified the Multiplayer plugin to allow more instances to be added to aid in his project, which is why I asked question B as well.

    Many thanks for any answers!

    Edit: Formatting and spelling

  • Thought I'd post here as this relates to the monthly subscription :

    I haven't been round these forums in years but, Ashley and Tom: thank you so much for adding a monthly option. The price right now for me in the UK is amazingly affordable and, as a burnt out hobbiest, I feel there's less commitment to paying for a whole year (I'd use Construct 2 a couple of times a year, maybe miss a month or two if other life stuff comes up).

    I can also evaluate all the features for just over £10 for a whole month. That's brilliant, over the years I kept getting emails about all the features added, and I do think Construct 3 has become a mighty fine bit of kit, but the annual subscription felt very out of reach for my financial situation.

    I hope to finish a project finally for once in C2, then I wanted to check out some new software, and C3 is now at the top of my list, especially because of how passionate and responsive the Scirra team has been over the many years.

    One competitor software I was interested in, last I checked, I can't even find info on their next product anymore. They'd seem to get frustrated at their users for asking about their next big product which they initially teased with screenshots. Major shame.

    Anyway, I'm glad this is now an option and I'm excited to experience all the features I've missed out on for a substantially cheap price. I will definitely consider buying yearly if things take off for me.

  • ome6a1717 How many CPU cores do you have?

  • Yeah I agree that this doesn't give a good overall performance insight, as it doesn't cover everything or a few features. There'd certainly be vast optimisations in things such as object picking and as you listed with collisions and stuff, but even when having a completely minimalist project that is practically empty, there is a 200+ fps difference between two different HTML5 software runtimes (Construct's and GDevelop) when in the exact same NWJS environment & version, with the exact same two events, and exact same image.

    Thinking more about why I felt driven to post this, I guess I wonder why this is the case. Are there things under Construct's hood that are permanently switched on maybe? Could we be able to have the ability to switch these off to squeeze out an extra 100fps or so?

  • Hey all,

    I am fluctuating a lot with my view on Construct. I recently expressed my excitement from the news of a new Runtime beginning development at some point, I was impulsive with posting my enthusiasm... But I did start thinking about the time between the "start" of Construct 3's development and how that took a fair amount of time and caused a quietening for C2 updates whilst C3 was being worked on. I'm now presuming that rewriting a completely new runtime would take muchhh much longer than the editor did to develop, not to mention the whole maintaining two codebases now for C2 and C3 (unless C2 gets the axe, I'm not really sure what's going on there right now).

    So... with a growing impatience and curiosity of what's out there to support the type of game I want to produce (busy, fast-paced, action game, for Windows), I've begun to start peeking at other free software in the mean time, I wanted to get an idea of the raw performance from just having 1 thing going on in a game, which I'm unsure if it is the most best way to benchmark things, but I quickly smacked together some stuff just to see and thought I'd share with everyone. I did a test involving 1 sprite that you can move left and right with A and D... Nothing more, nothing less.

    I took a look at GDevelop, that software that looks similar to C2 albeit somewhat clunkier in my opinion, and a look at Godot, which is something I keep seeing mentioned everywhere and it's kind of like the layout editor but with coding (probably not something people are interested in, but I was curious about FPS strictly, even if it meant "learn 2 code heueh")

    Just for the record - I focus on Windows EXE support the most, that's my goal and aim, and also where I've recorded these FPS scores I have below.

    Right so, some points about these statistics, please read!:

    • I record 5 random instances where the FPS seems to essentially "float around", I wouldn't record a random performance drop if it dipped to a sudden 2fps for whatever reason.
    • I don't know the NWJS version I am using, it's sorta sitting there, most likely the most recent version offered from Scirra's website.
    • GDevelop doesn't preview in "HTML5 NWJS", I had to modify the package.json of my installation of NWJS to load the weblink that GDevelop generates, and the preview loads. Therefore, the exact same NWJS installation is used for both C2 and GDevelop.
    • FPS Counters work randomly depending on the software, but FRAPS and Nvidia Shadowplay were both constantly running throughout all of this, and one software may display Nvidia's FPS counter, whilst others display FRAPS.
    • I believe I unlocked my FPS in NWJS for Construct from a forum post somewhere in "Construct 2 General", thank you to who provided that topic! Interestingly, GDevelop has the option to disable VSync directly in the projects settings, and change the maximum FPS, which is something I remember being an issue in the past with C2 changing the max framerate? I don't get it. I haven't experimented at all though.
    • I did not go through the "Export to NWJS" and record results from C2, as I'm under the impression it's exactly the same as previewing except for spritesheeting and obfuscating the code.
    • I don't have any proof of these numbers, each project was quite literally a 64x64 square that you can move left and right (Pseudo code: two events, on "A" pressed, set sprite to sprite.x-1, and one for "D" pressed.), and then viewing the FPS from an external source (Fraps, Nvidia Shadowplay). I'm sure this is easily reproducible!

    Major point to consider: I am in no way experienced with benchmarking. This could all be completely redundant information, could be unfair in some way, do not take this as accurate findings and read replies below (if any) to see potential explainations to what I've posted. I'm posting because if I worry about making mistakes, then I wouldn't post at all and may not highlight any useful information for others.

    My Specs:

    Intel i7-3770 3.40GHz (8 core)

    8GB RAM

    Geforce GTX 760

    Windows 7

    Construct 2 - r243

    GDevelop - ? (couldn't find version number in software)

    Godot - v2.1.3

    Construct 2 - Previewed in NWJS

    NVIDIA COUNTER

    1940

    1927

    1911

    1942

    1932

    GDevelop "HTML5 Project" - Preview in NWJS

    NVIDIA COUNTER

    2158

    2225

    2215

    2182

    2193

    GDevelop "Native" Project - Exported

    FRAPS COUNTER

    2735

    2716

    2690

    2706

    2754

    Godot - Preview

    I don't really know what I'm doing since I've used it for literally 3 hours but I've setup a basic project to move a sprite with a texture left and right with the keyboard, and the FPS was strange when it came to switching between notepad to write the FPS and the preview. Switching to notepad seemed to permanently lower the FPS by a thousand, hmm.

    Godot Engine Preview (seemed to drop FPS whenever I focused on notepad to write stats)

    Floats around 6940.

    Drops to around 5140 when I go to notepad and back.

    My opinion on the results:

    The results aren't shocking, I mean it's pure native scripting with Godot that gives us the 5000+ FPS which is totally expected (Included just in case people were curious about the worth of learning coding/scripting).

    As for Previewing in NWJS with C2 and GDevelop, I was... a little bit surprised, I always saw C2 as the superior software when it came to HTML5 in every aspect, but a roughly 200fps difference was unexpected. I think this is what the Construct runtime rewrite would improve on.

    The GDevelop Native EXE export was more surprising, with GDevelop having around 800fps more than C2 NWJS.

    I guess maybe it's NWJS's fault?

    Perhaps others or maybe myself in the future, could provide stats for Android exports; C2 can export to Android through it's process (that I am not familiar with as of now), GDevelop seems to have this experimental "native" android support where you pick your Android SDK folder and it generates an APK right away I think, and Godot can export native too although I haven't looked into this nearly at all.

    This calls out a point that I'd love if anyone could provide any information on, but I have but I admit I may be very factually wrong since I only know Construct 2 and Scirra well, not so much GDevelop. I ask because I adore Construct and seek maximum performance out of its exporters:

    GDevelop, made by

    (I believe)

    1 guy, has made a Native EXE exporter (And an experimental native Android one) for a very similar product to C2, as well as building the rest of the editor alongside (I read it was made opensource too, not sure if that's relevant or explains where the exporter came from) AND gaining a strong FPS boost for the EXE one. I mean...how? It sounds like it would be astronomical work and would lessen the time for development with everything else in Construct when it's brought up on the Scirra forums in the past. I guess I just don't understand, maybe GDevelop uses some sort of shortcut in making these exports. If so, can't Scirra do the same method? I legitimately wish I had more detail on this.

    Share your own stats and experiments! Would be interesting to see exports from HTML5 from Fusion, Unity, etc. Could be very insightful for us developers.

  • I develop platformer stuff with the multiplayer plugin and in my experience, I have a blast with it.

    Whilst I appreciate the development that Ashley did for the code included in the Multiplayer plugin, I don't use any of the built in sync stuff. I strictly send messages back and forth between players and have tried different experiments in the past to see how different implementations of lag compensation feel. I'm not really well versed with the standards of lag compensation, I understand things like dead-reckoning, but currently don't comprehend systems such as rollback. I feel that I have more control when I don't use built-in "one size fits all" stuff, to allow me to fine tune when I want to send a message about the players state/input/etc.

    Don't trust my decision though, I may have missed out on an even better experience by not using the built-in sync stuff!

    The main bad things I experienced (strictly speaking from my experience) were: my games become CPU bound due to me making my own platformer engines (To give me the freedom to add more complex stuff such as half-pipe slopes/Sonic-esque wall&ceiling running), I mean I optimised my events as best I can but having more than 2 or 3 players can strain the framerate. On top of that, having all the other gameplay elements to interact with (what good is a game if your just running around and jumping with no actions or hazards). I mention this because, oddly enough, disabling the multiplayer events and having the players exist as local players on controllers didn't destroy the framerate as bad, so maybe my online implementation wasn't that great, but certainly felt good for two players! I wonder how it would pan out if someone tried it with the platformer behaviour.

    The other bad thing with my design was pings higher than about 70-80ms, which isn't too great; the game was functional but it didn't feel fair with things such as "Your opponent is 100 pixels behind you but still hit you!" kind of situations. (probably my failed lag compensation events, gimmie a break, I was only experimenting! )

    It sure as hell wasn't perfect, but it was functional, playable with the right ping, and I was happy with it, and I will continue to try to exploit all the potential out of this plugin in the future. Then again, what online games are perfect? Even in tightly designed online games, there's always moments of chaos where something feels unfair or unexpected, but that is usually caused by lag. I guess the solution to this could be to design your game to make sure to lock people into connecting with other players in a similar geographical location, or make your game only online with friends

    (not sure about this due to never looking into this with the Multiplayer plugin yet, considering you need to find a game in the signalling server)

    , then that can solve that problem!

    Networking is a fun concept to me, figuring out how to send data as lightly as possible, the whole ping/lag/latency/packet loss stuff and how/why it happens, it's all so interesting. It's Just as interesting as optimising the heck out of events, it's oddly satisfying to get things working really efficiently. But I could safely say, if I didn't have an interest networking and only knew the fundamentals like what an IP address is and what a server is, then I would most likely not touch Multiplayer in game development (and if I did, I know sure as hell I'd get frustrated fast, even if I had examples and guides laid out in front of me. Conceptualising how online synchronisation works can be incredibly confusing and stressful). I hope some of you guys develop an interest in the area. If you love it, it will feel less stressful to figure out in game development and more like "Ohhh how weird, lets figure out how that works. Ohh I seee, but then how does... woah... Internet u so crazy".

    ...or give me 2147483647 pounds and ill do a third of the events 4 u

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • ...that latest blog post certainly took me by surprise!

    I've been watching the whole Construct 3 announcement from the very beginning, and I remember being so pumped to see the first blog post that gave the first piece of information about C3, which was... insanely underwhelming. Upon reading it, I had a sinking feeling and felt demotivated, and predicted a lot of people aren't going to like this. (Also I was mostly worried about lack of offline support but that got clarified quickly).

    I continued watching, reading each and every blog post, and I didn't really feel affected by what was announced, although I did find some stuff interesting such as putting C3 on mobile, but it didn't make me feel inclined to subscribe to C3.

    Upon the beta release, I checked it out, thought "ah...c2 in a browser..." and thought this is game over for me now; blog posts are done, beta is out, this is it... No new fancy graphics stuff, no performance enhancements, no intricate control over things to lower CPU/GPU/RAM usage, etc.... ok... I figured C2 would eventually get phased out, so may as well move on from this editor that I've grown exceedingly comfortable with.

    Then KAPOW, checked out the forums during lunchtime, saw someone mention a blog post, read the blog post...

    https://www.scirra.com/blog/204/the-future-of-the-construct-3-runtime

    A rewrite of the runtime? Admitting the runtime may have some issues/performance issues due to compatibility code and pressured workload as Scirra was only starting out as a business when writing the runtime (very respectable to include this in your blog post)?Mentioning optimisation and lowering memory usage, etc? Hot damn. This is definitely worth the money from me now, even if I'm only a hobbyist. This feels like a professional route to take, offering optimisation and capabilities that were only possible for Scirra to implement and users were unable to do. (I hope I haven't misinterpreted the blog post at all, correct me if I'm wrong at all! )

    I don't post much at all and haven't shown evidence for this, but in my experience, I'm definitely bounded by CPU issues and I'm strictly developing for Windows. Having multiple particles, or lots of platformer enemies onscreen, it racks up fast. Perhaps over the years, I should have been more vocal about my CPU issues, but this blog post signifies that this issue can change, at least improve substantially. Games could be able to be big and grand.

    Ashley , If this is the route you are taking, I'd love for you to take this opportunity before you begin getting too deep into developing the runtime, to ask the forum/paid users/professional users/random homeless person from London/forum section for subscribers, for their opinions/ideas that they feel would aid them in creating a large or 'busy' game (Busy, as in, lots of stuff going on onscreen). I have a handful of suggestions I'm eager to share, probably stuff that has been mentioned in the past, but I don't want this post to be another bombardment of seemingly random suggestions. Perhaps peoples suggestions would be unfeasible, or impossible within HTML5, or perhaps it will enlighten you on what people have discovered when making a large/busy game, but I felt if I had certain things in Construct, I could go above and beyond in development with your software.

    I feel much more willing to subscribe and support the company, almost certain about the 1st year, even though this is only a blog post that isn't promising anything, but it does come across as eager and passionate; like saying "No" to Canvas2D and pushing WebGL to be the standard, to be able to provide much more graphical stuff for us. I hope I remain in this mindset on the official release!

    You guys seriously done this whole process backwards! Start with this blog post, then tell us the other features, end with the browser-based + subscription blog post. I would have had a consistent stream of excitement if so and would have only queried offline support right at the end!

    p.s. the multiplayer plugin is awesome, I used it a lot and will continue to use it when I get back in the grind of development.

Jase00's avatar

Jase00

Member since 5 Jan, 2012

Twitter
Jase00 has 11 followers

Trophy Case

  • 12-Year Club
  • Jupiter Mission Supports Gordon's mission to Jupiter
  • Forum Contributor Made 100 posts in the forums
  • Forum Patron Made 500 posts in the forums
  • Forum Hero Made 1,000 posts in the forums
  • Regular Visitor Visited Construct.net 7 days in a row
  • Steady Visitor Visited Construct.net 30 days in a row
  • Enduring Visitor Visited Construct.net 90 days in a row
  • Unrelenting Visitor Visited Construct.net 180 days in a row
  • Continuous Visitor Visited Construct.net 365 days in a row
  • RTFM Read the fabulous manual
  • x15
    Quick Draw First 5 people to up-vote a new Construct 3 release
  • x7
    Lightning Draw First person to up-vote a new Construct 3 release
  • x7
    Great Comment One of your comments gets 3 upvotes
  • Email Verified

Progress

26/44
How to earn trophies