Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

/prog/ whining

Name: Anonymous 2011-02-25 19:02

we always talk about how we're going to build some game together but we never do... is it because we can't stand to look at each others code? i don't know! but i think it's time to have another thread about if we could get our strength together and do something. if history is any indication, chances are pretty low we'll succeed... but i say we keep trying, so: let's build a game.

ITT: whining about how /prog/ was never good and fun game ideas

Name: Anonymous 2011-02-25 19:03

YOU JUST LOST THE GAME, FAGGOT ALSO, BREATHING MANUALLY

Name: Anonymous 2011-02-25 19:05

>>2

Those ``you are now $verbing manually'' never affects me.

Name: Anonymous 2011-02-25 19:05

my two cents: multiplayer nethack meets minecraft in a post apocalyptic world (destroyed zombie infested cities + detailed woodlands)...

Name: Anonymous 2011-02-25 19:09

You are now verbing nouns manually.

Name: Anonymous 2011-02-25 19:11

>>2
the game
Back to /b/ please.

Name: Anonymous 2011-02-25 19:15

I want to write a game in Lisp, but everyone else want to write in C++ or Python. I cant cooperate with brainless faggots, who cant even map cars.

Name: Anonymous 2011-02-25 19:17

>>7
i'm in as long as use racket

Name: Anonymous 2011-02-25 19:21

>>6 fuck you faggot

>>7-8 MADE IN LISP
>cancel download

Name: Anonymous 2011-02-25 19:24

>>8
Macro in LISP.

(defmacro aif (cond then else)
  `(let ((it ,cond))
     (if it ,then ,else)))


"Macro" in Scheme/Racket.

#lang racket
(require racket/stxparam)
 
(define-syntax-parameter it (lambda (stx) (raise-syntax-error 'anaphora "missed context" stx)))
 
(define-syntax-rule (aif cond then else)
  (let ([temp cond])
    (syntax-parameterize ([it (make-rename-transformer #`temp)])
                         (if temp then else))))

Name: Anonymous 2011-02-25 19:24

we always talk about how we're going to build some game together but we never do

My /prog/scrape disagrees with you.

Name: Anonymous 2011-02-25 19:25

>>10
AUTISTIC RAAAGEEEEE

Name: Anonymous 2011-02-25 21:25

I've just read a few chapters of Code Complete and I know where our problem lies!  The language to be used isn't that important right now!  We should design the overall architecture down to the interface, major data stores and code modules, process flow, error handling, and localization strategy, before we select our tools and start coding!  This will help us understand what it is we're making and get us pumped about the project!  So let's have an architecture jam.

There will be a game.  The game is played on a grid of hexagonal cells.  The game grid has terrain, monsters, players, items, and triggers (potentially overlapping).  Players and monsters can move to an adjacent hex each turn.  Monsters will attack you if provoked.  There are abilites you can use against monsters, abilities you can use on terrain, abilities you can use on friendly creatures, and abilities you can use on yourself.  The monster.  You fight the monster.  The monster has some kind of reward inside it.  Abilities have a maximum range, or maybe their effects diminish with range.  Creatures can have status effects on them that modify their behavior or abilities.  You can learn new abilities by finding a magical scroll or something!  You can carry stuff around in your backpack, like magical scrolls or something.  Sometimes there's a super mean monster, and he's critical to getting to the next area!  Like he has a key!  Or maybe he's just guarding the hallway.  He might have a special AI script attached to him to make the fight interesting!  I don't think there's much point in classes or levels here, but maybe there are stats you can build up.

This is a multiplayer game, so people can connect their game to yours and bring their own characters in!  It's collaborative, so people can attach their own regions of the game world to the main one so others can explore them.  Maybe each player has a spell that can place a portal (trigger) that takes other players into their world.  Let's say whenever you join a server you have the option of installing/updating your world module there so people can keep playing it after you leave.  This means AI scripts have to written in something that is easily sandboxed!  I guess there could be an in-game editor for terrain and monsters and stuff!

I said something about turns earlier!  A turn-based rpg would be refreshing, but obviously it can't block all nearby players from moving just because you're not!  Maybe your turns are only synchronized with monsters that are fighting you.  Group combat doesn't really fit into my concept right now!  Who knows!

This is all pretty basic and rough!  If you guys really want to make something maybe you could help me flesh it out a little!  Or maybe you have a different idea altogether!  If it grows we could get a wiki or something to organize it!  Once we have the architecture nailed down the coding will be easy!  And if we can't agree on tools then everyone can just make their own client!

Name: Anonymous 2011-02-25 23:53

>>10
If it bothers you so much that Racket doesn't have defmacro, then write it in terms of syntax-case. It will take 7 lines tops.

Name: Anonymous 2011-02-26 7:31

i think we should go with a normal 2D grid so that people will be able to quickly hack up their own clients (or bots) with existing tools like ncurses... hex tiles are kind of complicated, i'm not sure if they're worth the extra effort. also, i'd go with a real-time instead of turn based MMO: you can play alone, you never need to wait for other people.

our main collective effort will be the protocol, since we can start coding away individually as soon as that's done. servers can implement completely different worlds (scifi, zombies, tolkien), and as long as they adhere to the protocol clients/bots will work. this way we can also easily have portals between servers. of course, before we can get started on the protocol we need to agree on "game dynamics" (?).

my server will be written in EXPERT RACKET.

Name: Anonymous 2011-02-26 8:06

Yet another failed "game" "project" on /prog/

Name: Anonymous 2011-02-26 8:08

You know, you could join any number of free games and help fix bugs and implement planned features. I've been doing this for years.

Name: Anonymous 2011-02-26 8:18

You are noun verbing adjectively.

Name: Anonymous 2011-02-26 8:42

>>17
like what games?

Name: Anonymous 2011-02-26 9:25

Game developing sucks. Too much effort for too little reward.

Name: Anonymous 2011-02-26 9:56

>>3
Do you think you can just interpolate in faggot quotes?

Name: Anonymous 2011-02-26 11:28

>>15
What does a zombie look like in curses wwwww

Name: Anonymous 2011-02-26 11:36

>>22
@

Name: Anonymous 2011-02-26 12:31

>>22
Z (or z if it is still a child)

Name: VIPPER 2011-02-26 16:32

If somebody truly cares about this, here is what i would do: first implement a very very basic game, but a complete one.
After that make a public git repository and make a public account with write access, but one with a simple password that /prog/ would know, like "read SICP" or so and post it on /prog/.
Last step: lean back and watch what happens, if nothing goes, just wait and maybe post a few times on /prog/ about this to remind people.
Im sure people would make add small stuff over time that would come out nicely over time.

Name: Anonymous 2011-02-26 16:38

not letting this thread die

Name: Anonymous 2011-02-26 16:44

>>25
I know what would happen -- BLANKING IN /PROG/RESS

Name: Anonymous 2011-02-26 16:55

>>15
Of course people make their own clients, that's what I said!  But why do they have to use ncurses?  That's pretty limiting!

If it's to be so unambitious, here is a sketch for protocol of "basic" rpg!  It's still missing some things, like player stats, spell visuals, and interaction between players.  Player movement is a bit hazy as well!  It kind of assumes free movement on a plane with players controlling their own position unless the server teleports them.  If we want tile-based movement or less cheating that can change!  It also deals with map files, but their format isn't specified—maybe we should skip that anyway and have terrain load in chunks as you approach it!  Oh, and it assumes combat occurs in the open world instead of some kind of jap cutscene!

let's say it's a tcp connection, for simplicity!  the server opens with a protocol declaration, then the client can disconnect if it's not compatible.  then they start sending each other a series of messages!  a message is a length prefix, an integer identifying the message type, and some arguments!

server->client:
(HELLO) protocol-and-version [' ' extension ...] '\n'
SERVER_INFO software server-name server-description motd
MAP hash filename size [url]
TERMINATE_CONNECTION reason
CREATURE cid name model is-alive is-player is-you
CREATURE_INFO cid description
CREATURE_MOVE cid zone x-pos y-pos x-vel y-vel facing
CREATURE_POWER cid hp max-hp mana max-mana
CREATURE_TARGET cid other-cid
CREATURE_STATUS cid effect-id effect-name time-left
CREATURE_STATUS_FADES cid effect-id
CREATURE_CAST cid spellid time-left
CREATURE_CAST_COMPLETE cid spellid
CREATURE_CAST_FAILED cid spellid reason
CREATURE_DAMAGED cid by-cid spellid amount
CREATURE_GONE cid
CHAT type channel from message
CENTER_VIEW zone x-pos y-pos
DIALOGUE title text [option ...]
DIALOGUE_CANCEL
LEARN spellid
RESET_SPELLS
INVENTORY_INFO bag-slots [equip-slot-name ...]
INVENTORY_UPDATE slot itemid amount
EQUIPMENT_UPDATE slot itemid amount
ITEM_GAINED itemid amount
ITEM_LOST itemid amount
SPELL_INFO spellid icon name description targettype
ITEM_INFO itemid icon name description is-usable equippable-slots
FILE_REFUSE filename reason
FILE_BEGIN stream-id filename size
FILE_CHUNK stream-id offset bytes
FILE_END stream-id

client->server:
CLIENT_INFO software player-name player-password
ENTER_WORLD
LOGOUT
MOVE x-pos y-pos x-vel y-vel facing
INTERACT cid
CHAT type channel to message
DIALOGUE_CANCEL
DIALOGUE_CHOOSE option
ATTACK cid
USE inventory-slot
WEAR inventory-slot [equip-slot]
CAST spellid cid
CAST_TARGETED spellid x-pos y-pos
CAST_STOP
FILE_GET filename

After the protocol declaration, the server sends SERVER_INFO and MAP and the client sends CLIENT_INFO.  The client then attempts to load the required map from local storage; if it is not available, the client can attempt to retrieve it using FILE_GET or via http at the alternate url given in MAP.  When the map is loaded, the client sends ENTER_WORLD.  The server responds with a barrage of INVENTORY_INFO, SPELL_INFO, ITEM_INFO, INVENTORY_UPDATE, EQUIPMENT_UPDATE, LEARN, and CENTER_VIEW.  There will likely be some CREATURE* messages assuming any creatures (including yourself) are within view distance.

CREATURE introduces a new creature to the client or updates an existing one.  The other CREATURE* messages update certain attributes or notify of actions/events, and CREATURE_GONE removes the creature from the client's view.  SPELL_INFO and ITEM_INFO are meant to populate a cache that the spellid and itemid parameters of other messages refer to.  The server must have sent the relevant info message sometime in the current session before referring to the spell/item in any other message.  INVENTORY_INFO defines the number of bag slots and the number and names of equipment slots (if any).

cid, effect-id, and stream-id are uniquely chosen identifiers for each instance of a creature, status effect, or file transfer.  The rest is pretty much self-explanatory!

Name: Anonymous 2011-02-26 17:18

>>28
Needs more DYNAMIC_CAST< T >.

Name: Anonymous 2011-02-26 18:33

>>25
git (and other SCMS) are cool and all, but not really geared towards an anonymous development model. i propose everyone just hacks on their own:

$ tar cfj archive.tar.bz2 *
$ base64 archive.tar.bz2 | wc
     70      70    5350
$ base64 archive.tar.bz2 | curl -F 'sprunge=<-' http://sprunge.us


>>27
i reworked it a little bit:

* this is for a realtime 2D grid (exploration/stashing/survival)
* terrain types: shallow water, deep water, beach, grassland, sand, rocky, concrete, paved, street, ...
* entity types: everything that is on the terrain
* todo: work out entity-data and event-data
* feedback?


- client->server:
-----------------

CLIENT        protocol-and-version extensions
LOGIN        nickname password
MOTD
SYNC        -- requests POS, CHUNKs and SPOTs

SNEAK,MOVE,RUN    direction
SHOUT,SAY,WHISPER message
INTERACT     direction
INVENTORY     -- lists things in the inventory
PICKUP
EQUIP        inventory-slot
DROP        inventory-slot
USE        inventory-slot
WEAR        inventory-slot equip-slot
UNWEAR        equip-slot

- server->client:
-----------------

SERVER        protocol-and-version extensions
CLIENT        OK | ERROR error-code error-msg
LOGIN        OK | ERROR error-code error-msg
MOTD        OK text | ERROR error-code error-msg | END

CHUNK         x y map-data -- when near the boundary of a chunk
SPOT         x y entity-data -- when you see an entity for the first time (or it changes)
POS        x y -- when crossing chunk boundaries
SEE         x y event-data -- when you see an interesting event
HEAR         direction event-data -- when you hear an interesting sound

INTERACT     OK | ERROR error-code error-msg
PICKUP         OK inventory-slot | ERROR
INVENTORY     OK inventory-slot entity-data | END
EQUIP        OK | ERROR error-code error-msg
DROP        OK | ERROR error-code error-msg
USE        OK | ERROR error-code error-msg
WEAR        OK | ERROR error-code error-msg
UNWEAR        OK | ERROR error-code error-msg

Name: Anonymous 2011-02-26 23:34

Leadership is needed. I nominate: XARN-SAMA!.

Name: Anonymous 2011-02-27 3:14

Up we go.

Name: Anonymous 2011-02-27 3:14

:GJS1M 67dcbdbce4a0b67c4b48e86a6ae29205a95e4b83024a9d947213d1231800e8d9
:45 c63d7427d160ab8cf726d3d8ce730aa2
:1298678567 1298794440
>>8

<-- check 'em dubz

Name: Anonymous 2011-02-27 4:38

:GJS1M 67dcbdbce4a0b67c4b48e86a6ae29205a95e4b83024a9d947213d1231800e8d9
:70 6959f9fb4a6d58dfd60d487ab706414b
:1298678567 1298799478

>>33
http://www.youtube.com/watch?v=GkLkWy0pHCE

Name: =+=*=F=R=O=Z=E=N==V=O=I=D=*=+= !frozEn/KIg 2011-02-27 7:58

>>1
we always talk about how we're going to build some game together but we never do...
We always talk about it? We talk about it?!

You are mistaking us for FrozenVoid. We are not him, we never talk about making some stupid game together. Ever.

Name: Anonymous 2011-02-27 8:54

Bump for ANONIX GAMES PACKAGE

Name: OP 2011-02-28 5:12

frontpage sucks, unashamed bump

Name: Anonymous 2011-02-28 14:07

>>37
MSFPSE was EOL'd years ago.

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List