Show HN: Open-source Counter-Strike-like game

(github.com)

170 points | by solcloud 8 hours ago

12 comments

  • bilekas 6 hours ago
    This is wild... PHP server with electron client.. I'm genuinely impressed. It's been many years since I worked with PHP. Back in the days before proper namespaces etc. This just blows my mind. What an incredible effort, I will definitely be helping with this project in my free time. We need more crazy projects like this!
    • calvinmorrison 7 minutes ago
      Php is basically runtime Java these days. It's so much better than ye olden days
    • solcloud 5 hours ago
      thank you for kind words :)
    • doctorpangloss 5 hours ago
      “Make games that are fun to make.”
  • peppertree 6 hours ago
    FYI client side is under www/assets. https://github.com/solcloud/Counter-Strike/tree/master/www/a...

    There are no dependencies besides threejs. No typescript or build pipeline. Actually fun to just read the code.

  • diggan 7 hours ago
    The GitHub languages thing shows it's 82% PHP, 15% JS and some sprinkles with HTML/CSS. But what is the actual client made with? Is it in a different repository? Or is it all implemented in PHP? Impressive if so.

    > This is low violence game

    I love this description for a game that is all about shooting others in face, planting/defusing bombs and trying to survive while being shot at.

    As a side-note, has the OP ever seen a football field? :) Seems to have a bunch of crosses and other out-of-place lines, but I guess the football isn't the focus so probably matters the least :)

    • dietr1ch 7 hours ago
      Well, no one says you need to shoot, maybe you can go the charisma route and convince the terrorists not to get the bomb down.
      • no_wizard 5 hours ago
        Its like a pacifist run in the old Fallout games
      • swyx 5 hours ago
        ah, talk-no-jutsu, the most powerful weapon in a main character arsenal.
      • rzzzt 6 hours ago
        Negotiator selected!
        • solcloud 6 hours ago
          unfortunetely voice chat is currently not supported :D
    • evanwalsh 7 hours ago
      You can see the client code in `www`: https://github.com/solcloud/Counter-Strike/tree/master/www

      The client is a lot of JavaScript (with graphics via Three.js)

      • solcloud 6 hours ago
        yes, client code is JavaScript using Three.js (https://threejs.org/) library, but since server and client is decoupled, client code can be implemented using anything, there is also php cli interactive interface, but most users prefer javascript one which is currently only one with real gui
    • solcloud 6 hours ago
      yes that is correct, all code is in this monorepo, yeah I get little hyped with that animal destroying description :D for that sidenote crosses - love your note - my sense of humor is kinda weird I guess or maybe because I grow up in Europe while watching America movies with football players wearing helmets idk :D

      on more humor side there is also php cli interface (https://github.com/solcloud/Counter-Strike/blob/master/cli/c...), but unless you have fancy matrix like font in your terminal emulator you probably do not see woman in red dress laying on pitch :)

  • NoboruWataya 4 hours ago
    Very cool. As an aside, it (the screenshot at least) reminds me a lot of "Extreme Paintbrawl", a game released for PC in the 90s. I used to love playing it when I was a kid. Some years later I found out that it is "considered to be one of the worst video games ever made". :D

    https://en.wikipedia.org/wiki/Extreme_PaintBrawl

    • solcloud 3 hours ago
      thank you! very cool, love is specific thing indeed, well we can always brawl for that rank one spot :D
  • wormlord 5 hours ago
    Open-sourcing this is awesome! What a great jumping off point for people wanting to do 3D game dev.
  • josephcsible 7 hours ago
    Can you add a license file?
    • solcloud 6 hours ago
      I guess I can, but I am not a lawyer and I don't really want to go on date with Gaben and his lawyers (date with Gabe, gooseman and Jess is ok for me), but if you have any suggestions please share
      • cAtte_ 6 hours ago
        even if you were infringing on Valve's copyrights (which you probably aren't, you're just using one of their trademarks), licensing your project or not wouldn't change that at all. but more importantly, by not including a license file in your repository, you are asking everyone to assume that your project is not licensed, therefore all rights are reserved, therefore it's not actually open-source (a comment on HN is sadly not enough): https://docs.github.com/en/repositories/managing-your-reposi....
      • soufron 4 hours ago
        If you need some pro bono legal help for choosing your license and avoisine trouble, just contact me :)
        • keyle 1 hour ago
          That is nice of you to offer, but your profile nor this message provide any way of contacting you.
          • debugnik 46 minutes ago
            True, but googling soufron brings up a popular lawyer with that last name, whose social media and website use the same handle, and even has a wikipedia page. So I'm assuming he knows he's easy to find.
      • solcloud 6 hours ago
        source code is all written from scratch and it is free for anybody
        • JTyQZSnP3cQGa8B 6 hours ago
          That’s not a valid license. Without a file or statement in the repository, I guess it’s a proprietary piece of software that people cannot legally fork.
          • droideqa 17 minutes ago
            It is public domain if there is no license.
        • sqeaky 6 hours ago
          So this code is free!?

          So I can take it and reuse it exactly as is and claim it's my own and sell it on Steam for $60 a pop?

          So I can take it and use your name that is surely somewhere in the code and fill it with swastikas and hate speech and say that this represents your views?

          Or more reasonably since I don't see a license this is copy written reserving All Rights and anything said here is just a trap you're just waiting for me to do something cool with it then hit me with a lawsuit and take my money, right?

          But more seriously head over to the open source initiative read up on a couple of licenses and pick one. Almost any license will prevent people from using your name but let other people use the code if that's a thing you want.

          If you just want to protect your name and let people use the code for whatever even making money consider an MIT or BSD Style license.

          If you want (to protect your name and for) other people to be able to use the code but need to share their changes consider a GPL style license. This will complicate other people making money but doesn't strictly prohibit it.

          If you don't want (the previous stuff and for) other people to be able to prevent people from selling it you might want to use something like a Creative Commons non-commercial license, I won't be perfect but there are flowcharts you can follow to figure out which license works for you.

          • airstrike 5 hours ago
            > So I can take it and use your name that is surely somewhere in the code and fill it with swastikas and hate speech and say that this represents your views?

            That has nothing to do with the game being free. If you dedicate source code to public domain and someone slaps swastikas on it, it doesn't represent OP's views all of a sudden

          • dankwizard 1 hour ago
            You've never worked in open source and it shows
        • kurisufag 6 hours ago
          this may be what you're looking for

          http://www.wtfpl.net/about/

          • wyldfire 5 hours ago
            Don't use that license, use something similar like MIT, BSD or Apache instead.
            • kurisufag 4 hours ago
              would you mind pointing out why?

              those are very dissimilar licenses in the sense that wtfpl is basically a cute way of putting something into the public domain, while MIT et. al. do actually have (albeit minor and reasonable) restrictions on the conduct of people using the code.

            • dokyun 4 hours ago
              WTFPL is a fine license. It's even FSF approved.
      • fragmede 5 hours ago
        Please do. This is your code so you get to decide exactly how free you want it to be, but without a license, it's "source available" which means that people can't do more than look at it and say "that's nice". If you want to let other people actually do something with it, then it needs a license. I can't decide for you which one to choose, but MIT is popular, let's other people take your code as long as they say where it came from. For web projects that you want to remain free, AGPL is a license that says you can use this code, but any changes you make to it also have to be free. It's a tricky topic that this comment is far too short to cover, but it's worth a hour or two of your time to consider as what you think of as okay to with your source won't align with what everyone else might consider to do with your source.
  • modeless 4 hours ago
    The client runs in Electron, but there is no web version? Why not?
    • beepbooptheory 3 hours ago
      Just run `python -m http.server 4000` inside the www directory! Seems to be working for me.
      • modeless 3 hours ago
        There should be a hosted demo at least. The web's big advantage is instant distribution with no installation on any platform. I think it's a shame to build using web tech and then throw away your biggest advantage by requiring platform-specific local installation.
        • solcloud 3 hours ago
          there is indeed a web version like others mentions, I also provided a prebuild binaries for lots of os/arch at https://solcloud.itch.io/counter-strike-football (and anybody can open PR for more), for hosted webpage demo I can for sure hosted somewhere on public internet as can anybody else, so I will leave that as a optional exercise for a reader to host community server :)

          I think most users will build from source or use provided pre-build binaries

  • dfox 7 hours ago
    Making FPS game with Electron client and PHP server is an interesting choice of technologies to say the least.
    • munk-a 7 hours ago
      PHP is a pretty strong language these days - don't knock it until you try it.

      There are definitely issues with getting fine grained memory control in a performant manner but for general processing it's pretty competitive.

      • kak3a 6 hours ago
        Ditto. Today's PHP is not your what your grandfather used to use. It's a much matured and evolving language. Python only got so popular due to Google's use and AI. It's like the new Perl.
    • klaussilveira 2 hours ago
      PHP is _fast_. That is a pretty good reason, specially for this type of game.
      • krapp 55 minutes ago
        PHP is fast for rendering websites, but I doubt it's faster than any other language a game this could be implemented in.

        I guess if the client is Electron, they're stuck with the web stack.

    • giancarlostoro 7 hours ago
      I was unphased by Electron, but PHP for Counter-Strike? I'm hoping its using regular websockets.
    • solcloud 6 hours ago
      thank you I guess, I started with php because of rapid development and TDD, but now you can transcode php to C++ or WebAssembly pretty easily, so using vkphp or once wasm socket will be in spec than it is free easy transcode (or using Emscripten), or second option since code is quite simple it will take like barely one week to rewrite it in c++ or other languages which is my plan once the game is future complete and stable (hopefully I will not have to develop my own language :D)
  • therein 6 hours ago
    You would think it would run in browser. Why are the clients packaged electron applications?
    • solcloud 6 hours ago
      actually game can be run using any modern web browser with websocket (without needing to use electron), I just provide electron as it have better performance (nodejs supports udp so no websocket bridge is needed) and key shortcut like Ctrl-W do not close tab instead you move forward while crouching :)
      • modeless 4 hours ago
        Ctrl-W is fixed in fullscreen, and WebRTC DataChannel provides UDP (both client-server and peer-to-peer). Check my port of Quake III: https://github.com/jdarpinian/ioq3, you can test UDP multiplayer and Ctrl-W live in your browser here: https://thelongestyard.link/
        • solcloud 3 hours ago
          I am fox on fire so Ctrl-W is tab close for me :) but yeah, there are ways (hacks) to make it run in web browser "natively" but only to some extend, I mean you can for sure rebind ctrl-w and other stuff or use chromium, but for me currently real LAN party is playing on electron :) web browser version is for testing and developing (for me at least)
  • mclau156 2 hours ago
    now re-make it in Godot?
  • camtarn 7 hours ago
    Having Counterstrike in the name of the repo and title of the game might not be the best idea, as it's a trademark.

    It's also ... not an awful lot like CS at the moment. Mostly the size and complexity of the map.

    • solcloud 6 hours ago
      maybe like a said I am not lawyer, I am just a peaceful person :)

      for audio/visuals the game is currently pretty basic because I am not wearing all the game development hats, and 3D graphics/audio/animation is not my favorite things (but PR queue is open if anybody is interested), but it can be scaled to more complex map, I actually convert old "real" dust2 map to this game a _year_ ago and record video of playing it https://www.youtube.com/watch?v=aIBVGZanVvU

  • oliverwinton 6 hours ago
    [dead]