FOK!forum / Gaming / Screeps: MMORTS for programmers
BarryOSevenwoensdag 27 juli 2016 @ 13:48
Goedemiddag!

Heb een gaaf spel gevonden namelijk: Screeps

logo.gif

https://screeps.com/


Steam

Officiele beschrijving:

quote:
Screeps is a MMO sandbox strategy game for programmers, wherein the core mechanic is programming your units AI. With all the attributes of a real strategy game, you control your colony by merely writing JavaScripts which operate 24/7 in the single persistent world filled by other players on par with you.

[screeps.com]

Such a colony can harvest resources, build units, conquer territory, trade with another colonies. As you conquer more territory, your influence in the game world grows, as well as your abilities to expand your footprint. However, it requires a lot of effort on your part, since multiple players may aim at the same territory.

Screeps is developed for people with programming skills. Unlike some other RTS games, your units in Screeps can react to events without your participation – provided that you have programmed them properly. And, unlike other MMO, you do not have to play Screeps constantly to play well. It is quite enough just to check once in a while to see if everything goes well.

Features:
You play by writing JavaScript AI which controls your units 24/7 even while you're offline.

No shards, game realms and session match-ups: units of all players coexist in the same real-time persistent world and obey the same rules.

Units, base, mining resources, territory control, economy, manufacturing, transporting, logistics, trading – all the attributes of a real strategy game which you need to program!

The better your scripts, the better your game — irrespective of the time played. Your creeps will mine, build, defend, and conquer as you just work, sleep, or walk your dog.

You can start without knowing JavaScript – only basic skills are required. However, if you are a pro developer, now is the chance to put your skills to the limit!

Open source game server engine.

An option to create your own local world and play with friends.
Wat houdt het spel in:

Je krijgt een room met daarin een controller. That's it. Het is de bedoeling dat je in javascript code schrijft die jouw room aanstuurt en op de juiste moment de beslissingen neemt zodat je een werkende economie hebt.

Je kunt ook alles met de hand doen, maar dat is op ten duur geen optie meer.

Het spel begint op het moment dat je de code klaar hebt om je room te managen en je in aanraking gaat komen met andere spelers. Het is namelijk de bedoeling dat je meer resources krijgt en dus zul je aangrenzende rooms moeten overnemen.

Je zult een defence perimeter moeten opzetten en aansturen. Zoals op het dashboard plaatje weergegeven heb ik besloten dat mijn defense perimeter actief is als alle torens genoeg energie hebben om te kunnen aanvallen.

lfM6AsZ.png
Eerste room van BarryOSeven

7ggV8VA.png
Code schrijf je gewoon in je eigen editor

Zo zijn er allerhande professionele tools beschikbaar om je in je voortgang te begeleiden.

Zoals dit geweldige nerdy dashboard:

9V5DSoF.png
Dashboard van BarryOSeven

Zoals jullie kunnen zien: factorio on steroids.

Simpelweg awesome. Zijn er meer mensen die dit spelen of willen spelen?

Handige linkjes:

Dit is de tutorial

Hier staan de API docs

Algemeen support overzicht

Screeps Slack community chat <--- absulute must

GitHub met tools en voorbeeld AI

Screeps Wiki voor nog meer uitgebreide info

Screeps Reddit

Screeps StackOverflow


Nog meer tools

[ Bericht 2% gewijzigd door 2dope op 05-08-2016 14:30:11 ]
dimmakwoensdag 27 juli 2016 @ 13:56
Leuke manier om te leren. :)
BarryOSevenwoensdag 27 juli 2016 @ 14:03
quote:
0s.gif Op woensdag 27 juli 2016 13:56 schreef dimmak het volgende:
Leuke manier om te leren. :)
Yup, er zit een gave community bij die via slack elkaar helpt.
mscholwoensdag 27 juli 2016 @ 14:17
quote:
Buy Screeps + 30 days of CPU subscription

After the 30 days period is over, you can continue playing, but you will be limited to 10 CPU in the online mode. The single-player and local hosted mode will be available without subscribing after the version 1.0 release.
juist, abonnements basis dus als je serieus mee wil doen aan de MP
BarryOSevenwoensdag 27 juli 2016 @ 14:21
quote:
0s.gif Op woensdag 27 juli 2016 14:17 schreef mschol het volgende:

[..]

juist, abonnements basis dus als je serieus mee wil doen aan de MP
Klopt, er zit wel een fee bij van 9 euro in de maand.

Het is verder niet pay2win in de zin van dat je meer CPU kunt kopen voor meer geld (wat ze eerst wilden doen)

Je kunt levelen en elk level krijg je 30CPU punten erbij tot een limiet van 300.

Als je via steam koopt krijg je voor altijd 10CPU, voor meer moet je inderdaad je abonnement activeren.
t4rt4ruswoensdag 27 juli 2016 @ 19:15
Dit lijkt mij ook wel leuk, eens even naar kijken.
mscholdonderdag 28 juli 2016 @ 15:46
Zowiezo maar op de wishlist, maar volgens mij ga ik gigantisch falen in dit spel :D
BarryOSevendonderdag 28 juli 2016 @ 17:16
quote:
1s.gif Op donderdag 28 juli 2016 15:46 schreef mschol het volgende:
Zowiezo maar op de wishlist, maar volgens mij ga ik gigantisch falen in dit spel :D
In de slack channel van de game is men erg behulpzaam. Een goede sfeer voor een MMORPG tot nu toe.

Verder gewoon beginnen met een creep resources laten ophalen en langzaam uitbreiden. Je hebt wel even de tijd om in te komen zeg maar.
Teenozaterdag 30 juli 2016 @ 17:49
Gekocht en weer gerefund, mij te moeilijk :)
BarryOSevenzondag 31 juli 2016 @ 13:20
Alright jammer maar kan het me wel voorstellen.

Vannacht voor het eerst wat delen van de economie dynamisch gemaakt. Zo worden er exact de juiste hoeveelheid upgraders gespawned voor de income die ik heb om winstgevend te zijn.

Valt nog een hoop te optimaliseren. Na een week spelen ben ik nog steeds enorm fan. Beste spel op de markt qua vrijheid me dunkt met een leuke volwassen community.

Gisteren ook het renew/recyclen van creeps geïmplementeerd zodat ze zichzelf upgraden naar een betere versie of de ticksToLive weer naar het start niveau brengt. (Groene bolletje screenshot)

m4zq4az.png

ZBjviJl.png

Sinds de laatste update van een week terug is er de creep.say functionaliteit geïntroduceerd. Dit wil zeggen dat de creeps in de publieke ruimte zaken kunnen zeggen die opgevangen kunnen worden door andere spelers.

Resultaat van die introductie is dat er nu op slack een groep mensen bezig is om diplomacy te gaan gebruiken met die creep.say. De beschrijving wordt nu opgesteld.

En dat is wat het zo gaaf maakt imho, er zullen in de toekomst denk ik alliences ontstaan die versleuteld met elkaar communiceren via creep.say. Met de juiste broncode kun je orders ontsleutelen en dat soort spul.

Hoewel creep.say nu nog voornamelijk wordt gebruikt door de rickrollers :P

1
2
3
4
5
6
7
8
9
10
11
switch (Game.time % 4) {

    case 0: creep.say('Never gonna give you up.', true); break;

    case 1: creep.say('Never gonna let you down.', true); break;

    case 2: creep.say('Never gonna run around...', true); break;

    case 3: creep.say('...and desert you.', true); break;

}

De eerste comment op de creep.say changelog :P

http://support.screeps.co(...)Changelog-2016-07-22
Chuck-N0rr1svrijdag 5 augustus 2016 @ 14:06
Is er ook een guide?
BarryOSevenvrijdag 5 augustus 2016 @ 14:24
quote:
1s.gif Op vrijdag 5 augustus 2016 14:06 schreef Chuck-N0rr1s het volgende:
Is er ook een guide?
Dit is de tutorial

Hier staan de API docs

Algemeen support overzicht

Screeps Slack community chat <--- absulute must

GitHub met tools en voorbeeld AI

Screeps Wiki voor nog meer uitgebreide info

Screeps Reddit

Screeps StackOverflow


Nog meer tools :Y)

Genoeg te doen ;)
Chuck-N0rr1svrijdag 5 augustus 2016 @ 14:26
quote:
_O_ nu nog verdiepen in java :P
BarryOSevenvrijdag 5 augustus 2016 @ 14:26
quote:
14s.gif Op vrijdag 5 augustus 2016 14:26 schreef Chuck-N0rr1s het volgende:

[..]

_O_ nu nog verdiepen in java :P
javascript ;)
Chuck-N0rr1svrijdag 5 augustus 2016 @ 14:29
quote:
0s.gif Op vrijdag 5 augustus 2016 14:26 schreef BarryOSeven het volgende:

[..]

javascript ;)
:@
BarryOSevenvrijdag 5 augustus 2016 @ 14:40
quote:
1s.gif Op vrijdag 5 augustus 2016 14:29 schreef Chuck-N0rr1s het volgende:

[..]

:@
JavaScript is wel helemaal hot tegenwoordig, als je dit nu leert zit je wel goed de komende 5 jaar.

Even een update mijner zijde, na 2 weken nog steeds zo enthousiast al in het begin. Heb de eerste stapjes gedaan in een multi-room omgeving waarmee mijn architectuur verrassend genoeg zonder grote problemen kon omgaan.

Meteen heb ik een claimer rol gemaakt en heb 2 claimers op pad gestuurd de naburige rooms over te kunnen nemen. Helaas kon dat pas op GCL 2 (Praise the GCL _O_ ) en was ik nog GCL 1. Heb maar besloten de rooms te reserveren, alleen vergt dit een constante aanvoer van claimers waardoor ik nogal snel blut was.

Verder heb ik een aantal optimalisaties doorgevoerd en heb zaken herschreven om object oriented te gaan werken.

Gisteren dacht ik nog even mijn Defence code aan te passen en was de defence perimeter 15 minuten offline. Exact op dat moment kwam er een NPC mijn room in (gebeurt hooguit een paar keer per dag) en heeft mijn complete basis uitgemoord.

Gisteren kwam er op de communitychat al iemand aan met het gevoel als je nieuwe SpawnCode gaat uitproberen:

Azo3tnz.gif

Altijd hetzelfde liedje :D
Chuck-N0rr1svrijdag 5 augustus 2016 @ 14:54
quote:
0s.gif Op vrijdag 5 augustus 2016 14:40 schreef BarryOSeven het volgende:

[..]

JavaScript is wel helemaal hot tegenwoordig, als je dit nu leert zit je wel goed de komende 5 jaar.

Even een update mijner zijde, na 2 weken nog steeds zo enthousiast al in het begin. Heb de eerste stapjes gedaan in een multi-room omgeving waarmee mijn architectuur verrassend genoeg zonder grote problemen kon omgaan.

Meteen heb ik een claimer rol gemaakt en heb 2 claimers op pad gestuurd de naburige rooms over te kunnen nemen. Helaas kon dat pas op GCL 2 (Praise the GCL _O_ ) en was ik nog GCL 1. Heb maar besloten de rooms te reserveren, alleen vergt dit een constante aanvoer van claimers waardoor ik nogal snel blut was.

Verder heb ik een aantal optimalisaties doorgevoerd en heb zaken herschreven om object oriented te gaan werken.

Gisteren dacht ik nog even mijn Defence code aan te passen en was de defence perimeter 15 minuten offline. Exact op dat moment kwam er een NPC mijn room in (gebeurt hooguit een paar keer per dag) en heeft mijn complete basis uitgemoord.

Gisteren kwam er op de communitychat al iemand aan met het gevoel als je nieuwe SpawnCode gaat uitproberen:

[ afbeelding ]

Altijd hetzelfde liedje :D
:D _O- nice
t4rt4rusvrijdag 5 augustus 2016 @ 18:37
Je kan het toch testen in een test server?
BarryOSevenvrijdag 5 augustus 2016 @ 19:37
quote:
0s.gif Op vrijdag 5 augustus 2016 18:37 schreef t4rt4rus het volgende:
Je kan het toch testen in een test server?
Yup er is een PTR alleen heb ik het spel pas twee weken dus is mijn account nog niet geactiveerd daar.

Verder net ook weer een mooie actie.

Ik wil graag een room van een buurman, maar ik had nog geen attackers en behaviour gemaakt daarvoor. Dus ik spawn een leger zonder de code goed te testen en ren op die room af. Nadat zijn basis kapot was kwam ik terug om mijn basis helemaal uitgemoord te zien. Nou had ik dus een fout gemaakt met het selecteren van targets voor de harvester waardoor de hele economie in de soep liep.

Maar wel erg gaaf. De eerste aanval is een succes geweest, ook voor de tegenstander. :P
topdeckzondag 7 augustus 2016 @ 09:16
JavaScript :')

Interessant maar kun je geen andere taal gebruiken?
topdeckzondag 7 augustus 2016 @ 09:49
Andere language kan dus wel zolzng die naar Js compiled. Ik GA denk ik coffeescript of typescript checken hiervoor

https://github.com/jashke(...)s-that-compile-to-js
BarryOSevenmaandag 8 augustus 2016 @ 15:04
quote:
1s.gif Op zondag 7 augustus 2016 09:49 schreef topdeck het volgende:
Andere language kan dus wel zolzng die naar Js compiled. Ik GA denk ik coffeescript of typescript checken hiervoor

https://github.com/jashke(...)s-that-compile-to-js
TypeScript is een superset van javascript. Gebruik het zelf ook.

De volledige development environment is los te trekken van het spel. Via Grunt kun je bijvoorbeeld je spul doorsturen.
Bosbeetlevrijdag 28 juli 2023 @ 20:10
sesam
FlippingCoinvrijdag 28 juli 2023 @ 20:16
Thanks @Bosbeetle

Ik heb hem gekocht, ik heb al aardige ervaring met JavaScript en TypeScript. Ik ga er van het weekend eens mee spelen, misschien een goede kans om eens purescript uit te proberen, of misschien gewoon met javascript.

Zelf vind ik javascript wel een fijne taal, het heeft vele nadelen maar ook zeker voordelen, de array methods(map, filter, reduce etc) zijn erg fijn en ik heb nog geen programmeertaal gezien welke hier beter mee omgaat.
KoningWoutervrijdag 28 juli 2023 @ 20:35
quote:
16s.gif Op vrijdag 28 juli 2023 20:16 schreef FlippingCoin het volgende:
Thanks @:Bosbeetle

Ik heb hem gekocht, ik heb al aardige ervaring met JavaScript en TypeScript. Ik ga er van het weekend eens mee spelen, misschien een goede kans om eens purescript uit te proberen, of misschien gewoon met javascript.

Zelf vind ik javascript wel een fijne taal, het heeft vele nadelen maar ook zeker voordelen, de array methods(map, filter, reduce etc) zijn erg fijn en ik heb nog geen programmeertaal gezien welke hier beter mee omgaat.
Have fun! Ik doe ook mee in dit topic.
KoningWouterzaterdag 29 juli 2023 @ 11:04
quote:
16s.gif Op vrijdag 28 juli 2023 20:16 schreef FlippingCoin het volgende:
Thanks @:Bosbeetle

Ik heb hem gekocht, ik heb al aardige ervaring met JavaScript en TypeScript. Ik ga er van het weekend eens mee spelen, misschien een goede kans om eens purescript uit te proberen, of misschien gewoon met javascript.

Zelf vind ik javascript wel een fijne taal, het heeft vele nadelen maar ook zeker voordelen, de array methods(map, filter, reduce etc) zijn erg fijn en ik heb nog geen programmeertaal gezien welke hier beter mee omgaat.
Bijna alles aan deze game is open source. Er zijn goede starters te krijgen voor TypeScript.

Zelf draai ik ook TypeScript met een OS Architectuur en state machines voor de creeps.

Ben begonnen op Shard 3 (dat is waar je 20CPU krijgt als je het spel hebt gekocht) maar ben nu bezig met intershard code om een Room te claimen op Shard 2. Want ik heb ooit een lifetime subscription gekocht xD

En zoek een room uit met 2 sources en exits naar andere rooms voor je outposts.

Wat wel aan te raden is om een private server op te zetten. Die kun je zo snel als je wilt zetten, en is erg handig voor debuggen.

Ik deploy mn bot daar naar toe en heb ook andere bots toegevoegd zodat ik tegen mezelf kan vechten en oefenen.

Hier is een simpele guide om een private server op te zetten:
https://www.reddit.com/r/(...)up/?onetap_auto=true

Let wel op dat je dan ubuntu 20.04 gebruikt, hoger werkt niet out of the box.

Als je verder nog vragen hebt beantwoord ik ze graag.

Oja en zet zo snel mogelijk een IDE als VSCode op om te proggen en de code te pushen naar de servers. Je wilt niet eeuwig in dat kleine venstertje proggen.

Maar het is simpel beginnen en je komt vanzelf zo ver dat je weer een refactor of zelfs een rewrite kan doen.

Op shard 3 is het vrij peaceful en echt goed voor beginners. Op shard2 zitten mensen met hele geavanceerde bots waar je zonder room support echt geen voet aan de grond krijgt.

En schrik niet als je room platgewalst wordt. Je codebase blijft bestaan en je code wordt alleen maar beter als je gevechten aan gaat.

En natuurlijk de API
https://docs.screeps.com/api/
KoningWouterzondag 30 juli 2023 @ 09:17
Gisteren uren bezig geweest code te schrijven die tussen servers kan werken met behulp van het IntershardMemory.

Dan eindelijk een room weten te bemachtigen, komt er een advanced bot aan die mn room direct plat walst.

Shit happens, had ik maar een (ranged) attacker mee moeten sturen.

Was wel een beetje pissig maar de code is niet weg. Moet nog wel een hoop aan gebeuren want er zit geen garbagecollection in atm en dat is nog knap ingewikkeld.

Maar goed ik verander van strategie. Er zit op shard3 nog een vrije room boven alleen zit die potdicht met muren en ramparts. Dus ik heb zojuist een dismantle process geschreven om een gat in de verdediging te slaan en zo die room te bemachtigen. Heb ik nog een room dicht bij portals naar Shard2.

Fingers crossed.
KoningWoutermaandag 31 juli 2023 @ 17:22
Heb gisteren besloten te stoppen met TypeScript en JavaScript.

Ben nu van plan een OS te maken in Rust en WASM voor snelheid.

Ik had nog helemaal geen ervaring met Rust en kom er maar moeizaam doorheen.

Krijg het nu niet voor elkaar een memory object te verwijderen wat wel essentieel is,

Morgen ga ik er weer mee verder met frisse zin. Hopelijk lukt het dan wel.

Vanavond maar weer eens wat tutorials doorlezen.
KoningWouterwoensdag 2 augustus 2023 @ 11:32
Vandaag lekker bezig geweest (en ik stop nog lang niet)

Ben bezig mijn kernel te implementeren.

Ik krijg het al voor elkaar processen toe te voegen, na mijn pauze ga ik deze processen serializen en deserializen tussen game ticks.

Op dit moment zit ik ruim onder de 1 cpu gebruik. Dus ik heb er goede moed in dat ik heel wat verder kom dan met Typescript en Javascript.

En het is fantastisch weer eens een nieuwe programmeer taal te leren.

Vind het nog wel moeilijk met ownership en lifetimes maar daar kom ik wel uit.
KoningWouterzaterdag 5 augustus 2023 @ 10:48
Na een paar dagen klooien met de nieuwe taal Rust heb ik het dan toch eindelijk voor elkaar.

Een werkende kernel met processen waarbij elk process zijn eigen memory heeft.

Niet dat het allemaal perfect is, want de taal is toch wel erg moeilijk vind ik. De compiler is voor masochisten. Als je de ene error op lost krijg je er 10 bij. Maar dat zal ook wel door de nieuwigheid komen.

Moet zeggen dat ik het wel erg leuk vind zo'n nieuwe taal leren.

Vanmiddag dan maar eens beginnen aan de game logic. Eens kijken of ik een paar creeps aan de gang kan krijgen.
Bosbeetlezaterdag 5 augustus 2023 @ 20:57
quote:
0s.gif Op zaterdag 5 augustus 2023 10:48 schreef KoningWouter het volgende:


Niet dat het allemaal perfect is, want de taal is toch wel erg moeilijk vind ik. De compiler is voor masochisten. Als je de ene error op lost krijg je er 10 bij. Maar dat zal ook wel door de nieuwigheid komen.

Dat is toch juist de filosofie erachter!
KoningWouterzondag 6 augustus 2023 @ 08:06
quote:
88s.gif Op zaterdag 5 augustus 2023 20:57 schreef Bosbeetle het volgende:

[..]
Dat is toch juist de filosofie erachter!
Yup, en het is ook heel wat fijner dat de compiler aangeeft dat iets niet mag in plaats van dat je met buffer overflows en null pointers zit te klooien als het draait.
KoningWouterdinsdag 8 augustus 2023 @ 11:42
Gaat lekker nu. Ben lekker bezig processen te implementeren.

En het belangrijkste is wel dat mn CPU gebruik tussen de 2 en 3 schommelt.

In TypeScript was dat toch wel 5-6.

Nadeel is dan wel dat de binary vrij groot is. Ik heb nu al 10% van m'n code storage vol.

Maar vette taal dat Rust. Op het begin wel moeilijk met borrows en ownerships en dat soort spul. Maar nu kom ik er lekker doorheen.

Jammer dat er niemand is om het samen mee te spelen en een allience te vormen.
KoningWouterdonderdag 24 augustus 2023 @ 16:54
We zijn weer wat verder.

Heb de afgelopen maand gespendeerd om goed Rust te leren programmeren. Het is best een erg moeilijke taal maar ik heb alle Rustling oefeningen afgerond en begin me er steeds beter in thuis te voelen.

Nu weer terug naar Screeps.

Heb mijn hele kernel omgegooid: Waar het eerst met downcasts werkte en string comparisons heb ik het nu met een enum gedaan. Die zijn heel erg krachtig in Rust.

Wel heb ik een probleem met mijn scout creep. Die trekt toch soms op een of andere manier 20cpu leeg bij een simpele move commando. Ergens zit nog een fout.

Maar nog steeds een erg tof spel. Jammer dat ik mijn oude JS/TS repository heb verwijderd want daar zat nog een schat aan knowledge in. Maar goed ik wilde met Rust echt opnieuw beginnen. Dus ben druk bezig te komen waar ik al was.

Heb wel mijn roomplanner en de floodfill algoritmes die daar bij komen kijken dit keer echt goed geprogrammeerd. Zo bespaar ik toch een behoorlijke ruimte die eerst bezet werd door roads en zo.

Nouja dat was het weer voor nu, ben druk bezig op mijn private server. Ben ook begonnen op de MMO server maar die heeft een tickrate van 3,5 seconde dus dat duurt nog wel even voordat ik daar ben waar ik moet zijn.
KoningWouterwoensdag 30 augustus 2023 @ 08:13
Drie en halve dag ben ik bezig geweest met mijn minimal cut algoritme om te berekenen waar ik de ramparts (energy shields) moet plaatsen om alles te beschermen maar toch zo min mogelijk ramparts te hoeven plaatsen. (Je moet je ramparts upgraden en dat kost miljoenen energy)

Het was me een ellende. Gelukkig had ik nog voorbeeld code maar het omschrijven van javascript naar rust was een hele kluif.

Uiteindelijk bleek ik een spelfout te hebben waar ik anderhalve dag op vast zat. :')

Maar het werkt nu gelukkig en nu ziet mijn basis er zo uit. (Helemaal automatisch gebouwd)

oCjQJtC.png
FlippingCoinwoensdag 30 augustus 2023 @ 08:18
Ik ben er nog niet aan toegekomen. :')


Ik heb hem wel gekocht dus komt vanzelf dat ik hem speel, zoveel games heb ik niet op steam.
KoningWouterwoensdag 30 augustus 2023 @ 08:27
quote:
16s.gif Op woensdag 30 augustus 2023 08:18 schreef FlippingCoin het volgende:
Ik ben er nog niet aan toegekomen. :')

Ik heb hem wel gekocht dus komt vanzelf dat ik hem speel, zoveel games heb ik niet op steam.
Hehe het is een redelijk tijdloos spel dus neem je tijd. De eerste tijd ben je toch vooral met je zelf aan het knokken om alles draaiende te krijgen (en vooral te houden).

Geef maar een seintje als je bent begonnen.
FlippingCoinwoensdag 30 augustus 2023 @ 08:31
quote:
0s.gif Op woensdag 30 augustus 2023 08:27 schreef KoningWouter het volgende:

[..]
Hehe het is een redelijk tijdloos spel dus neem je tijd. De eerste tijd ben je toch vooral met je zelf aan het knokken om alles draaiende te krijgen (en vooral te houden).

Geef maar een seintje als je bent begonnen.
Ja ik zal het in dit topic plaatsen. :7