|
Post by ViciousLothario on May 27, 2023 5:55:33 GMT -5
Wrestling Booking Warfare - Development Diary A online EWR-like browser-based booking simulator game Here is ViciousLothario, it has been a while since I was a very active member of XHF. Most of you might remember me from the XHF:TEW Universe game I created here on the boards. During my time away from the boards and the wrestling scene overall, I've been developing my own skills. I'm now a web developer and work mostly with PHP, JS, HTML and CSS. I'm currently working for a big company here in Portugal and I'm becoming a better developer and person everyday.
In the past week, I've been talking with our dear beloved, XHF Network Admin, Mongo The Destroyer about my ideas to develop a Booking Simulator like EWR with online features and he has been supportive like he always has been towards my personal projects. I also shared this information with Asaemon, which most of you might know as Cpt. Charisma from the old EWR modern day scenarios and he has also been supportive.
If you guys are interested in this topic, please continue reading. I will only ask you one thing. Please keep this information inside XHF-community, I don't want to advertise anywhere else, for now, I don't want to promise to the "wrestling community" or "wrestling games community" something I can't deliver and from what I know from this community there is a lot of creative input and sources of knowledge which can aid me to develop something better and you won't crucify me or curse me if things go wrong, because you've never done it.
WHY EWR-LIKE AND NOT TEW-LIKE?!
I don't want to commit the mistake many indie developers do, which is 'bite more than what you can chew' or 'have more eyes than belly' or... Let's move on.
EWR is a lot more simple than TEW and TEW tends to lose players because of it's complexity and wins players because of certain features which aren't available in EWR. There is a lot than can be said about Adam Ryland itself, but I will stick to his games, which gave me countless hours of gameplay.
To be honest, TEW isn't that complex at all and now that I'm more developed in the computer programming scene, I look at his games like a 'glorified spreadsheet'. There are a lot of stats that barely have any meaning in the match calculations and there are so many limitations on his games that is obscene. Imagine paying 35$ for a game that you can't even set the window to fullscreen. Some triple-A games don't charge us that much. By no means I want to advertise my game based on someone else's lows. My point is, the years of playing EWR\TEW gave me a lot of user-experience and ideas for features which should be present, what people like, what people dislike, and that experience will serve as a base for the development of something on my own.
I want the project to start as simple as it gets, develop as fast as humanly possible according to my schedule to a playable state and develop over time, from match engine to day-to-day simulation. So looking at EWR is a great starting point. Plus, having EWR as a base I win a powerful ally which we all know, Mongo, probably the person I know off with more EWR experience, there will be some nuances from EWR like having regions.
Mostly because EWR uses .dat files which are hex coded and although I could try to convert those user-made scenarios by reading HEX bytes, it's too much of a hassle. Even tried to reach out to Open Wrestling developer which has a EWR database converter in his game but doesn't capture all the stats. Even downloaded his source code and edited it to get the stats I want, but JAVA isn't my main language and faced some issue on compilation. And heck with that
WHY ARE YOU TELLING US THIS?! WHAT DO I CARE, DUDE?!
Well probably as of right now what I need the most is a place to share my work, what I've done today, what I plan to do, why I've done it. Maybe if someone is interested they will discuss with me. I'm now 30 and I've learned that the best way to develop as a person is to listen to others, those others being persons you trust. The same goes with a game development. Maybe I develop a feature, share it here and people will tell me.. "dude that's cool, but would be even better if you could...".
HOW MUCH WILL YOU CHARGE FOR THE GAME?! DO I HAVE TO DOWNLOAD ANYTHING?!
I will charge you nothing, ever. The game will be free-to-play, free-to-roast, free-to-insult... No paywalls. No micro transactions. I'm developing this for a very specific community which has developed tons of great work over time, for free. I can't even imagine the amount of hours modmakers spent developing scenarios for us to play, also for free.
The game will be browser-based. And no, nobody will have to download anything. As long as you have a internet connection and a browser you can play the game.
Surely, I will add a little Donation button when the game is up-and-running but that is if people want to or can afford to. There won't be any ads as well - I will host the game on InfinityFree to start with because I won't spend a dime and that platform might show us some ads not certain but a simple ad-blocker might suffice. I won't advertise a game and ask for patreonship like many guys do and never deliver the game. I'm not that person and will never be. I love money but I will never scam someone for it.
INTERESTED?!
If you're interested, tune in on this thread, I will post here on a regular basis introducing the features I've developed.
|
|
|
Post by ViciousLothario on May 27, 2023 7:25:43 GMT -5
Entry #1: About Me, programming, the project setup and framework
This is more of a technical/personal entry than actual game feature. Like I said in the earlier entry, my main language of development is PHP and the core of the app - I will refer to the game as an app very often - will be written on php.
About me Let me talk a bit about programming and my story. Programmers aren't gods although most think they are and usually have big egos, this isn't my case. I'm almost a self-instructed programmer, I've spent countless hours searching for knowledge on the web, reading books, trial and error, spent days looking at errors and small logical problems, then you resolve an issue, and another one appears, you need to be persistent to be a programmer. You need to develop your logical reasoning. I - as an example - look at computers as very clever dumb machines.
Once I felt ready, I started working as a freelancer and developed several websites, online stores, PWA's - you name it - for clients. Earned some big bucks and also faced periods of 'drought', also faced clients that don't pay and all that jazz in this capitalist world.
I started looking for a more stable income and with my social skills I've managed to get a job at one big company here in Portugal and in the past months I've been working hard to maintain the job. Most of my co-workers went to university and have degrees, years of study, I don't so I look up to them with admiration. Some times I even think, how am I between these genius? But I also realize that I have something they lack. I'm the first to start working and the last to stop working.
Years of low income jobs, low qualifications jobs do that to you. When you spend 10 years of your life working 12\13\14 hours a day as a waiter or any other low qualification job, you learn a lot. Everyone has problems, but when you come from the bottom, your problems are different. I've battled against starvation as a kid and I've been involved in several others low class problems which I don't want to talk about. I was just a kid with no parenting not because my parents didn't want to parent properly, they just couldn't afford to.
I've learned how not to cry about it, how not to be a loser in live. Success is what you want success to be, not what society imposes to you. And today I'm sucessful, I have a job that I love to do, I have my own family a beautiful wife, a beautiful young boy, we're not rich, we do not own a big house, we aren't superior to anyone and we don't need to. We are healthy and we love each other, I can't ask for more than that. Everything else around me, it's a plus. So if sometimes you look at yourself as a loser like I used to. STOP! You're just thinking about what others expect from you, not about what you really are.
That's the reason behind me learning how to program. I always wanted to go this route but never did and used all the excuses to my own self. 'I don't have time', 'I can't afford it'... Remove the do not, can not from your life. Work hard. Go the extra mile. And you will achieve your goals. Impose to yourself a small little realistic goal every day and work towards it, don't leave it for tomorrow and in no time you will feel better about yourself.
I'm in love with programming. Nowadays, I don't go to work because I have to, I go to work because I want to. And this project isn't something I have to do, is something I want to do and always wanted to do for several years.
Sorry, got carried away... Let's stop with this TED talk bullshit.
What is PHP and why PHP?
Well, Facebook is written on php. Wordpress is php. Most of the online forums are written on PHP. More than 80% of the web is written on PHP. I don't want to enter on programming language discussions. Which language is better or not. PHP is often disliked by several programmers cause it is beginner-friendly, but once you dive deep into it, you will be amazed with it and with what you can do with it. It has pros and cons like any other language. And for me it's the best option.
PHP works a logical language to communicate between client and server, to work with databases. Exactly what is needed towards this project.
Project Setup and Yii2 Framework
Nowadays, I barely write procedural/plain PHP. I work with OOP(Object-oriented programming) PHP plus I work with a framework for it.
That framework is called Yii2, which is commonly refered to as 'PHP on Steroids'. To work with a framework like Yii2 or any other you need your logical reasoning to be developed and to master the language.
Look at it as a learning curve, you start with the typical 'Hello World' and you struggle, then you develop a small calculator and struggle you spend days looking at it and trying to understand what you've done, then it becomes basic and you do that calculator from the top of your head, but then you want to make a super powerful calculator and you struggle, and so on...
To give you a more pratical example:
Procedural PHP would look something like this:
$servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB";
// Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); }
$sql = "SELECT id, firstname, lastname FROM MyGuests"; $result = $conn->query($sql);
if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>"; } } else { echo "0 results"; } $conn->close();
And with Yii and the correct config setup I would do this:
$example = MyGuests::find()->all(); echo $example->id . ' - Name: ' . $example->firsname . $example->lastname
So this allows me to develop a lot faster and a lot easier. Then there is composer, packages, user-made content which you can re-use. I run a single command in a terminal window and it will create the database I setup and write the code and all that stuff in seconds, I load libraries of code/modules and use them.
That's why I plan the development of this app/game to be swift and faster than usual. And that's the reason behind using PHP and Yii2 framework.
Maybe this is a bit long and not so interesting feature based but sharing and writing allows me to gain another layer of understanding of what I am doing and why.
|
|
|
Post by ForeverKuroi on May 27, 2023 7:57:51 GMT -5
I agree. Programmers have large egos. BUT NOT ME. MINE IS THE TAMEST EVER. JUST ASK MONGO.
|
|
|
Post by Cross Recoba on May 27, 2023 8:10:16 GMT -5
Yes!!!
|
|
|
Post by ViciousLothario on May 27, 2023 8:46:14 GMT -5
Entry #2: Registration, Authentication and Login
With the yii2 skeleton advanced app, it is quite easy to run a user authentication system. I have managed to expand this system. So now it's possible to register an account and login to access the dashboard.
This might not seem much, but it's the base. Next step is to develop a user profile system.
At the moment, only have two roles. User and Administrator, this will dictate what you can access in the dashboard.
Registration also sends an email authentication token, so it prevents some bots from spamming accounts.
Styling of the register and login screen isn't that much of importance to me at the moment. I want to go to a alpha state as soon as possible so I won't worry much about it.
|
|
|
Post by ViciousLothario on May 27, 2023 9:17:55 GMT -5
Entry #3: Admin LTE, Bootstrap, etc
Yes, I will indeed use AdminLTE for base template. This template comes with some presets that users can change, like Light Mode\Dark Mode, if the sidebar is fixed, etc, etc. More info on:
adminlte.io/
So when users login, they will have a full responsive template without me having to worry too much about HTML and CSS. Once again, I'm doing this for faster development. Down the line I will worry more about customization and different look. I'm focusing on functionality and not looks.
All the website also uses bootstrap framework and jQuery for some client-side scripts that might help with some functions. This isn't much of a feature but it's something great for a developer to work with. Implementation was quite easy for me and already have a full-running website.
|
|
|
Post by ViciousLothario on May 27, 2023 9:55:07 GMT -5
Entry #4: Game Lobbies and Scenarios
This was a topic of discussion in the past week between me and Mongo.
Yes, I could do a giant universe with 1 day being equivalent to 1 week in-game. And it's something I plan to do in the future. But let's be real about it. Players wouldn't be in equal footing when playing due to availability. Not everybody can login everyday to run their federation or even if they can some players don't want to and interest could die in a very fast manner even for those who would be active everyday, plus it wouldn't use a real-world scenario and it would be a game full of fake wrestlers and fake federations. Although it could be very fun, I think for it to run properly I would have to work in some automation tools and several other features.
I prefer to give the possibility to run a game lobby or several game lobbies. Also want to give the opportunity to play the game as a single player only. Some people might not want to compete against other people and prefer to compete against the AI, or just fantasy book while they are on their train journey home. Or play on their mobile while they are watching TV without the pressure of playing with\against other people.
So you're a player. You can join other players lobbies and play there or create your own lobby. Lobbies can be password protected so you only play with who you want to play. You can add a description to your lobby where you talk about availability or schedule of the game lobby. At the moments game lobbies aren't supporting user-defined rules as the game engine isn't even created. But the game lobby is the starting point for the game.
When creating a lobby, you also choose which Scenario you want to set. Which will lead me to the next point. Scenarios/databases.
I will manually create those scenarios since I need to do some conversions or in other words 'dumb' down those databases. For those scenarios I will utilize TEW2020 and TEW2016 user-made databases which are already available online.
In the future I plan to add a scenario creator/editor, like the File Editor in EWR or database creator in TEW. But there is already so many scenarios for those games which can be utilized.
So here it is a sneak peek for the game lobby creation:
Please bear in mind this is a alpha state, I plan to style this later on. Once again have to refer: 'I'm focusing in functionality first and will worry about looks later on'.
|
|
|
Post by ViciousLothario on May 28, 2023 4:58:51 GMT -5
Entry #4: Users, Users, users, and some thoughts
I've been working on the user bit of the app. Because everything revolves around the user. Once you login, you can see your username on the sidebar. YEY!! What a feature. Always dreamed about that. PLUS! When you click on it, you go to your own user profile and can change username, email and your own password. It works!... I'm a level 10 mage now.
Jokes aside, this is something that had to be done and despite being simple at the moment, more changes will come. What about user avatar and other specific user things? Not set. And won't worry about it at this point.
I have users working properly with the bare minimum and that's enough for the time being. User avatars will lead me to my next point.
Some Thoughts
I have been battling inside my head about the hosting and the limits of a free host. I can only host up to 5GB in a free host. It might seem a lot for a text-based files and database files. But it isn't a lot when you add pictures to it. Even if I implement some top notch image compression algorithm into it, let's say a database has 2500 workers and 50 promotions. We're talking about at least some KB's for each picture * 2550. Is a lot of space.
So how do I plan to battle that? Use an external service to serve the pictures. A free service of course. I was thinking about imgur.com or google drive. For each picture because I need to ask a external source to provide me the picture and although I can cache most of those pictures on the server, I prefer not to. But later down the line, I can even set those external services to work as CDN which in return impacts the perfomance to be even better that using an internal source, because I reduce the request payload on the server.
But what if we reach the limit of those 5GB?! Well that's an inevitability. But until we reach those 5GB we're talking about a lot of game lobbies, millions of wrestling events and millions of user data. And at that point I hope I already have some donations so the project becomes self-sustainable and even if it doesn't, I can always move to a paid service hosting, for 25€ or 30€ I can get 250GB hosting or even more, depends on the hosting. Something like Amazon AWS has more cost, but performance wise it's the best. And if the game has adherence I don't even mind paying that from my own pocket. But that's something I will have to monitor over time. Let's say we get a stupid mofo who wants to ruin the experience for others and starts creating games like a crazy man just to occupy space... Remember those user management features I talked about earlier? WE HAVE THE BAN HAMMER! AND UPON USING THE BAN HAMMER ALL THE USER DATA IS DELETED!!! MUAHAHAHAHAHAHAHAH!
One thing is certain, I will never charge any money to a user. I can maybe limit the number of lobbies a user can create and run co-currently, but we're talking way down the line. Because every lobby will have it's own database created based on the scenario chosen. I'm not worried about it. But is always something to keep in mind and this type of questions always arise and decisions need to be made.
|
|
|
Post by Cross Recoba on May 28, 2023 6:29:21 GMT -5
I don't think you need to monetize by costing the user but a few thoughts:
* I'd lead with CDN delivery for images, TEW can be pretty arduous on an old laptop (trust me, I know) so you're looking for people to give your outsider/outlaw game a chance. Speed of play and loading times will be key to that.
* I'd consider looking at including some real companies, low-level, and maybe charge the $10 (for example) but keep that data fresh, update title histories etc for their trouble so they can get some exposure and $10-20 isn't a hardship but could mean server space is paid for without you having to run at a loss.
* Early dev days but work out who your 'influencers' are. Soccer players play Football Manager and it'd be reasonable to assume some wrestlers play this (I imagine Low Ki books himself as himself and thus is unaware how much of a backstage nightmare he is IRL or in TEW!). Get the influencers onboard early, Asaemon did some TEW Mods so he has rep within that community and Adam Ryland is not well-liked by many so this should be a FUBU game.
|
|
|
Post by ViciousLothario on May 28, 2023 10:04:14 GMT -5
I don't think you need to monetize by costing the user but a few thoughts: * I'd lead with CDN delivery for images, TEW can be pretty arduous on an old laptop (trust me, I know) so you're looking for people to give your outsider/outlaw game a chance. Speed of play and loading times will be key to that. * I'd consider looking at including some real companies, low-level, and maybe charge the $10 (for example) but keep that data fresh, update title histories etc for their trouble so they can get some exposure and $10-20 isn't a hardship but could mean server space is paid for without you having to run at a loss. * Early dev days but work out who your 'influencers' are. Soccer players play Football Manager and it'd be reasonable to assume some wrestlers play this (I imagine Low Ki books himself as himself and thus is unaware how much of a backstage nightmare he is IRL or in TEW!). Get the influencers onboard early, Asaemon did some TEW Mods so he has rep within that community and Adam Ryland is not well-liked by many so this should be a FUBU game. Monetizing is not an option. The game will be browser-based, is hosted on a remote machine that runs php scripts so trust me that performance is the least of my concerns. Of course that If I run recursive iterators and stuff like that or if the database is not well designed I will have problems. But for an example, I work with yii on a daily basis and docker environments etc. We have a huge database. We control players and medias (huge video files) used by clients, we have access to the whole platform, and performance is not an issue. It all boils down to the quality of the code. I will include real-world scenarios made for TEW2020 and TEW2016. I'm right now on the process of looking at TEW databases and how to shrink them into a more simplistic EWR-like database for the game engine. For an example, EWR has like 7/8 .dat files to look at, TEW at this moment has 217 tables to look at, most of them don't even have foreign keys and indexes set up properly or are empty. Also they are .mdb MS Access files, they don't hold half of the speed of a SQL database. And you want to know the fun part about them? They use certain values and keys, that aren't even listed on the database but are compiled in the TEW.exe... For an example, for you to get a Venue/Location in TEW, you reference the region, which is a number from 1 to 56... And there is no table for regions. Which leads me to believe that when you press new game, each and everyone of the locations is ran and asks to another piece of code, which is the name of the region, in programming that's called big piece of shit. Every day on TEW you see the processing right? He runs over the whole database, works that have been used on that day. He asks several other stuff into the game. Match histories/skills/progress... TEW is badly programmed and I say that from a user POV. TEW databases are one of the sources of the processing times taking so long. Not the pictures.
|
|
|
Post by Cross Recoba on May 28, 2023 10:15:59 GMT -5
I get that the pictures don't add processing time in TEW. I also know that from an SEO POV (as it's browser-based), image load time is an annoyingly important part of a site.
|
|
|
Post by ViciousLothario on May 28, 2023 10:22:49 GMT -5
I get that the pictures don't add processing time in TEW. I also know that from an SEO POV (as it's browser-based), image load time is an annoyingly important part of a site. Indeed it is. Loading times for a webpage are key, specially on mobile devices, on a computer browser with the current connection speeds that's not a problem at all, but when you think of mobile with 3G, it's a totally different story.
|
|
|
Post by ViciousLothario on May 28, 2023 11:12:51 GMT -5
Entry #5: Database work
Yes indeed we are already preparing the wrestler database to accommodate the wrestlers. It is the central database for the game. Because with no wrestlers, there wouldn't be any wrestling federations or any wrestling shows. I know I could go a bit over with the wrestlers, but I want to keep thing simple to start with at least for version 1.0.
The main table wrestler and wrestler model will contain only the basic info, skills will be in another table although I could add them right here on this table to remove some relations from the database, but I want wrestlers to progress over time and I think I will split the wrestler and wrestler skills in two tables.
So the wrestlers will have all the simple info from EWR and TEW, they are going to be assigned a default face or heel gimmick. And one addition that I will add that isn't available in EWR is future workers. So when we are playing historical scenarios we can have those debuting wrestlers with their skills set. This will open a total different topic about progression.
Also about wrestler skills, I will have all the EWR skills and I will add one or two skills like workrate/psychology/basics. I will also add regions. But regions aren't exactly how they work in TEW. The regions will be TEW main regions and Overness will be the main Popularity skill, but overness will be split into these regions. So a wrestler can be popular in USA and not so popular in Japan, that is a great addition because in EWR you can't properly book Japanese based federations or European-based federations. Fatigue and Condition will also be a thing. Wrestlers can be fatigued from wrestling too often which in turn may increase the chances of injury. But when they are injured it will hurt their condition. So for an example, if a wrestler Condition gets too low, he may quit wrestling.
I know Mongo will hate me for adding this layer of complexity but hey, there aren't 10000 skills that aren't used like in TEW.
|
|
|
Post by ViciousLothario on May 28, 2023 12:18:43 GMT -5
Entry #6: More database work
Yes, so fast it is. Decided to change the worker table, to accommodate all the skills we need. Instead of having the EWR system in place where staff is a different table then wrestlers. I will go with a more TEW approach to it, where workers can also work as staff. That will make the game more realistic.
At the same time, removed some of the staff roles present in EWR because I think they don't have as much impact in the game other than financial impact, instead of having to hire medics and production workers, players will have to invest on medical, production and writing department as this will affect workers and events.
Road Agents will be a thing. They will be auto-assigned to each match according to their skill, but players can also micro-manage road agents for a specific match just like in TEW. Not having a road agent in place will result in no road agents notes for the match.
Sizes will also be different from EWR as they will look something more like TEW in that regard. Instead of lightweight and heavyweight... We will have several sizes diferences and that can impact certain stuff.
Worker active areas?! No. Workers are available to work in any area. If they relocate or not, is another question. If that implies travel costs? I'm not yet certain if I will use that. But the UI won't be half as clunky as it is in TEW and show costs and information will be shown when booking an event.
Next up is to set certain worker attributes. And that can raise a question, what about TEW personalities? They won't be existent in this game. Instead we will use behavior skill to translate those. Will I use all the worker attributes present in TEW? Nope. Just the big ones that can really impact gameplay.
|
|
|
Post by ViciousLothario on May 28, 2023 15:17:33 GMT -5
Entry #7: Black Magic
Here I was developing and writing the database schema. When I remembered...
But then... I looked at this...
And guess what!? I'VE MANAGED TO BEAT THE SYSTEM AND TO FORCE HACK MY WAY THROUGH WITH PURE SHEER BLACK MAGIC.
Yes, you heard that right... Black... Magic. The stars aligned. I was one with the cosmos. The Supreme Inteligence looked at me. AND GAVE ME THE SOLUTION. TBH... Basically, went to stack overflow. Copied a piece of code. From one user called Luna, who had a Black Cat as his avatar. He didn't even explained how this works... But I understood it and now it works and I know how to work with it. LONG LIVE THE BLACK CAT AVATAR STACK OVERFLOW USER!
|
|