This job post is closed and the position is probably filled. Please do not apply. Work for 6 Flag International Ventures and want to re-open this job? Use the edit link in the email when you posted the job!
๐ค Closed by robot after apply link errored w/ code 404 3 years ago
\nMultiplayer Gaming Server: Backgammon and Mahjong\nPLATFORMS: Meteor.JS (for API integration, sockets, and edge server), Mocha+Chimp (3rd-gen e2e+acceptance testing), AngularJS (for single-page-app routing and DOM binding), CreateJS (for canvas gameplay), Semantic-UI (for lobby layout/forms), LESS(css)\nABSTRACT: The hired candidate will create a Meteor.JS application which serves a front-end created with the HTML5 technologies mentioned above, connects to our existing account/authentication/wallet API using seamless integration, and provides customers with a complete BACKGAMMON and MAHJONG multiplayer gaming experience.\nWORKING CONDITIONS: fully shared code uploaded daily by each individual developer ( no holding of the code until after payment ), scheduled weekly milestones ( TBD by both parties ahead of time ). The technology stack isn't negotiable, Meteor, etc must be used. TDD development, only tests will be written first, code without a corresponding test is rejected.\nJOB REQUIREMENTS: The client and contractor will assist each other in writing full spec documents and wireframing the entire project. Contractor is expected to deliver tests and quality assurance reports weekly ( format will be given ) and the client is expected to deliver acceptance reports weekly.\nMISSED MILESTONES: Each milestone consists of one week's work. If a milestone is missed, then the project and all due dates are set back by one week. If 3 milestones are missed, the project is canceled.\nPAYMENT TERMS: No Up-front payments will be made, 100% of the project cost will be paid upon completion and acceptance of the deliverable milestones. The milestones, schedules and payments will be negotiated prior to contract signing. No up-front payments!\nBUDGET: $25000 USD, payable upon completion after 160 days. \nFEATURE LIST:\n * Graphic design: all graphic design assets will be provided by the client. Contractor is NOT expected to provide them.\n * connect to our existing authentication and wallet servers and provide access to those as necessary for account management, credits/debits; announce game results and payouts in real time and send API calls to credit/debit accounts as needed\n * Backoffice: a separate application which allows in-depth view of the database\n * Configurable items:\n * min/max bets\n * player bans\n * chat moderation\n * When turned RED (high setting): user must select a chat for approval, after user enters, then admin approves, then it is posted.\n * when turned YELLOW (medium setting): all chats go in with a 10 second delay, can be killed by admin in the 10-second window\n * Chats can always be removed from public chat history by admin\n * NO undo is required\n * Ban player from chat for X days (default is 9999)\n \n \n * XP formula\n* Define up to 10 equations from game DB records to calcuate XP points\n\n \n * league points formula\n* Define up to 10 equations from game DB records to calcuate points\n\n \n * level challenges\n* Define level-amounts and stats being tracked\n\n \n * create game (rake%, single/rounds)\n * Create tournament (rake%, single/rounds)\n * leaderboards\n * name/description\n * Period (daily, weekly, monthly, hourly)\n * amount to pay out\n * statistical formula which determines # of points\n \n \n \n \n * Viewable items:\n * # players online now\n * # players online who were also online in date range\n * today\n * this week\n * this month\n \n \n * all games, tournaments, game history, filter and sorted by various methods according to logical thought process\n * game search and replay\n * Find a game based on game ID, which players were involved, which date it was played on or how much the bet/winnings were.\n * allow a game from the past to be viewed as if it's being played in real time, and stepped through one game-action at a time (also available to all players)\n \n \n * player profiles, filterable/sortable by disconnect, win/loss, amount wagered, amount won, XP amount, player level, teams\n * Rake report, showing the amount of rake for every game, as well as overall in a date range\n \n \n \n \n * Data models\n * Step Action in game\n * Round in game\n * Game\n * Active Games\n * Tournaments\n * Player\n * Team\n * League\n \n \n \n \n * Lobby\n * Show currently active games\n * creating games for other players to join, \n * spectating games in realtime, \n * viewing previous game results, \n * Show recent games\n * View list of players by several metrics such as recent activity, best rating\n* Show player avatar, XP/level, rating, disconnect %, link to profile\n\n \n * View leagues and teams inside a league\n* Show league points by player/team\n\n \n \n \n * Tournament/Game Types\n * player create: games with a single round\n * admin only: create freeroll games that do not require a buy-in and pay the winner in bonus money that can only be used to create games inside the system\n * admin-only: games wherein multiple rounds are grouped together, and the first person to reach a certain number of points (which are awarded based on the round winnings) means the game is over.\n * Each rounds results dictate the amount won, though the game is ended by a particular player reaching a certain score ( 6 points )\n * Players can create as many instances of this game type as they desire\n \n \n * admin-only: create 3+ player tournaments of double-elimination brackets\n * Bracket selection\n * In order for each new brackets games to begin, the players who are selected for each bracket must be online and then are automatically paired and begin playing.\n * If players are offline for more than 2 minutes while waiting for a game to begin, they are paired together if possible. \n * After 10 minutes and player who is being waited on forfeits his tournament entry.\n \n \n * Entering the tournament costs X The administrator selects the payout amounts for the top places, up to 10 places can be paid, the amount is typed in as a percentage of the prize pool, and obviously cannot exceed total buy-in minus the rake.\n * When a tournament or 2-player game is created by admin, it is a template for an instance of a tournament or game. Instances of tournaments cannot be created by players, they are automatically created based on a schedule, such as every day at every hour, half past the hour\n \n \n * every admin-only item can be set with a custom rake, but the default is 1%\n \n \n * Bonus Credit\n* BTC credit which players cannot cash out but can use to play against other players, join tournaments etc. Rake is not collected for any bets placed with bonus money, games played with partially bonus and partially normal money are charged rake based on the amount of money which was considered normal money.\n\n \n * Gamification Layer\n * allow creation of leaderboards based on certain statistics such as amount of bets with time-based payouts to the leaders and tracking/reporting of previous winners with leaderboard snapshots.\n * Level system\n * Player can earn levels based on XP points and challenges completed\n * XP (experience points) and create a level system to allow players to level up. When players level up they are given bonus credit\n * The formula for XP is: (# of uBTC (0.001 BTC == 1 uBTC) won plus # of bits wagered) divided by 2. For tournament entries, 10 % of the number of uBTC won.\n * Players who would gain less than 1 XP point for a particular game/tournament are awarded 0 XP \n * Players can only level up if they reach the required # of XP points AND complete the level challenges ( see below)\n \n \n * Level challenges\n * Each level has 3 quantitative requirements before leveling up. Example: the # of wins, total amount wagered, and etc. \n * Once the player has reached the level challenges, and gained the XP necessary to level up, the leveling up event happens NOT automatically but by user action. The user is notified that they can level up.\n * Leveling up bonus: Upon leveling up, user can select from one of a list of bonuses for their account. The list will be arbitrary and at least 10 items long, and include things like new avatars, BTC bonuses for other parts of the site (eg: bonus money for poker room), or bonus money for use in the backgammon room.\n \n \n \n \n * Leagues:\n* Teams can be created and named by any player, and joined by any other player. This results in a league of teams, and a Match is always running between these teams, which culminates in a monthly payout based on the number of points accrued by teams during 1 month period, beginning on 1st of each month and ending on 11:59:59 of last day of that month.\n * Only Players can win points. The total amount of points from all players in a team = the teams number of points\n * The top 3 teams in a league at the end of the league cycle will receive a prize, similar to the leaderboard prize, the league scoreboard must have a snapshot feature so that previous league results can be displayed.\n * How to win points: the program should allow for arbitrary rules to be declared, based on per-round,per-game and per-tournament statistics such as wins/losses. Customized code should be easily placed.\n \n \n\n \n \n \n * Game Logic\n * Refer to https://en.wikipedia.org/wiki/Backgammon#Setup and https://en.wikipedia.org/wiki/Backgammon#Movement for complete instructions on how the gameplay moves in rounds and how the chips are set up.\n* We will use only the main variation of backgammon for the purpose of this project. HOWEVER, additional game variations should be available by simply adding a single file and then referencing that file in a field gameType from the data model, which can be selected upon creation of a game (the default is our gameType which we will create in this project)\n\n \n * Steps to play:\n * The base bet amount is negotiated upon starting the game. \n * At any time, a player can double the bet, and the other player either forfeits the game or accepts the doubling. Each player can do this any number of times, until the amount reaches 64x the original base bet (max bet)\n * The minimum base bet is 100 satoshi. The maximum base bet is 1 BTC. These should be configurable.\n * Any time the amount of the bet is changed, the appropriate amount is deducted from both players accounts.\n * The total pot amount is always shown on the screen, and uses a count-up animation, in which the size of the text and the color of the text for the total pot amount are fluctuating and a sound is played.\n \n \n * Both players roll the dice, the higher number goes first, a tie results in re-rolling.\n* When the dice are rolled (at any time) an animation and sound will be played\n\n \n * The first player rolls the dice and then moves his tokens a certain number of times/pips\n * The number of pips and tokens moved depends on the ruleset defined above.\n * In order to move a chip, user will click on the chip he desires to move, and then the available positions he can move that chip to will HIGHLIGHT. The highlighted area being clicked, the chip will move to that area\n * If the chip selected cannot be moved, a red error highlight shows on selected chip\n * If no moves are available, a pertinent message is shown for 2 seconds, followed by the dice passing to the other player\n \n \n * The white and black players maintain a fixed position on the board where the dice move back and forth between these two positions to indicate whose turn it is to take action. \n * A timer with a circular (green-to-red) pattern moves along with a text (EG: 1:14) to indicate time left to act for each player\n * Eventually the players will begin to bear off or finish the game, and when the game is complete, the scores for that round will be displayed, \n * If this is a 1-round game, credits are given immediately to the winner.\n * however if this is a multi-round game, no credits or debits will be made until the game has ended\n \n \n * Player can resign the game at any time\n \n \n * Payouts\n * Single-round game: rake is deducted and tracked in credit transaction to the winner.\n * Multi-round game: rake is deducted after all rounds were played in a single credit transaction to the winner, with corresponding rake amount also tracked.\n * Tournament: see above, arbitrary admin setting\n \n \n \n \n * Idle and Disconnection handling\n * allow a game from the past to be viewed as if it's being played in real time, and stepped through one game-action at a time.\n * Handling timing of moves during a game. \n* Time-bank: player is allowed 15 seconds, and can act faster than 15 seconds. If acting faster than 15 seconds, the remainder is built up and added to the 15 seconds for each additional action. The maximum time bank is 60 seconds. \n\n \n * handling disconnection of players during game, \n * 60-seconds without an action but still connected is considered a forfeit of the game round, 2 of these in a row forfeits the game.\n * Any disconnection without a reconnection within 60 seconds is considered a forfeit of the game round, 2 minutes disconnected is a forfeit of the game. \n * After reconnecting, the entire clock system starts over.\n \n \n * provide tracking of and allow players to cancel or resume disconnected games from a special popup that occurs if there are any games that have been paused due to disconnection\n \n \n \n \n * Player Profile\n * can be viewed for oneself or any other player who has a public profile\n * View/change avatar\n * View my rating/Rate another player\n * Win/loss record of player\n * Disconnect % ( how many times they disconnect or quit during the game )\n * Report a player ( allows player to be flagged for cheating or inappropriate play with an explanation, which is all forwarded to our support team )\n \n \n * discussion forum using telescopeapp.org will allow players to converse about any subject related to the game.\n * in-game player chat (per-table chat rooms, players can mute players , real-time chat moderation, time-based and permanent bans, admin broadcasts to all rooms), \n * area for game instructions (including game rules, how to play, strategy/tips, lobby instructions, house rules, XP+levels+leaderboards)\n \n\nPROPOSED TEAM MEMBERS FROM YOUR TEAM:\n1. full-stack developer who writes Angular2 and Typescript on the front-end and Meteor/TypeScript on the backend. Implements most of the features, models, services etc. heavy lifting, not a designer in any sense, writes code to documented specs which he helps create.\n\n2. HTML5 animator, who can translate JSON data and game concepts into things like graphs, charts, dice animations, card animations. In addition, he writes all the markup for the site, and all the CSS. So, he's into D3, CreateJS and things such as this.\n3. UX Quality Assurance, Test writer, test analyst, this person works very closely with the team members to make sure that the customer is well represented throughout the development cycle, and guarantees that code is human-tested and machine-tested. Probably a full-stack developer but not necessarily going to write a lot of code, since his job is primarily to decide which tests to write and make sure they get written by whoever.\n\n\nTEAM MEMBERS PROVIDED BY US:\n1. a real designer, someone who knows what looks good, can produce real graphics, illustrations etc, and design pages properly, as well as do UX testing later in the dev cycle. Helps with animation planning, storyboards, user visit lifecycle\n2. Graphic Artist with HTML5/CSS experience, a person who can do things like create banner ads, curate stock photos used in the marketing side, and provide assistance to #1 or #3 in terms of execution of graphics, animations. Proficient in Adobe After Effects. Has an eye for color, spacing, things of this nature. Assists #5 in testing.\n\n3. Project / server / deployment manager. Performs all the management for the team. Every team member will report to this person\n\n \nPROPOSED MILESTONES\n * Week 1: Testing Setup, Platform Setup, CI Setup, GIT Workflow Setup\n * Week 2: Wallet API Tests\n * Week 3: Data Models\n * Week 4: \n * Player Profile Tests\n * Backoffice Tests\n * Lobby Tests\n \n \n * Week 5:\n * Game Action/Game Round Tests\n * Game Win/Lose, Debit/Credit Tests\n \n \n * Week 6:\n * Tournament Tests\n * Player Profile, Backoffice, Lobby Beta Built to Wireframe Spec\n \n \n * Week 7:\n* Game Logic Tests part 1\n\n \n * Week 8: \n* Game Logic tests part 2\n\n \n * Week 9:\n * Leaderboard Tests\n * League Tests\n * Game Logic Beta Built to Wireframe Spec\n \n \n * Week 10:\n * Gamification Tests\n * Discussion Forum, In-Game Chat, Game Instructions Tests\n \n \n * Week 11:\n* Leaderboards, Leagues Beta Built to Wireframe Spec\n\n \n * Week 12: \n* Game Action/Game Rounds, Game Win/Lose, Debits/Credits Built to Spec\n\n \n * Week 13: \n* Gamification Built to Spec\n\n \n * Week 14:\n* QA Testing/Regression Testing Documentation Built to Spec\n\n \n * Week 15:\n* Acceptance Testing Documentation Built to Spec\n\n \n \n\n\nBenefits\n\nWork with a company that is on the cutting edge of BITCOIN GAMING WEB APPS. Work with no-nonsense people who are all about getting work DONE. Secure your future forever...if you can work and you want a job, you'll have one with us for years to come. \n\n#Salary and compensation\n
No salary data published by company so we estimated salary based on similar jobs related to JavaScript, Game Developer, Web Developer, Git, API, Admin and Marketing jobs that are similar:\n\n
$65,000 — $100,000/year\n
\n\n#Benefits\n
๐ฐ 401(k)\n\n๐ Distributed team\n\nโฐ Async\n\n๐ค Vision insurance\n\n๐ฆท Dental insurance\n\n๐ Medical insurance\n\n๐ Unlimited vacation\n\n๐ Paid time off\n\n๐ 4 day workweek\n\n๐ฐ 401k matching\n\n๐ Company retreats\n\n๐ฌ Coworking budget\n\n๐ Learning budget\n\n๐ช Free gym membership\n\n๐ง Mental wellness budget\n\n๐ฅ Home office budget\n\n๐ฅง Pay in crypto\n\n๐ฅธ Pseudonymous\n\n๐ฐ Profit sharing\n\n๐ฐ Equity compensation\n\nโฌ๏ธ No whiteboard interview\n\n๐ No monitoring system\n\n๐ซ No politics at work\n\n๐
We hire old (and young)\n\n