Sto leggendo questo articolo di John Funge su Cognitive Modeling per Computer Games: link
E qualche ulteriore approfondimento su questo argomento in questo URL:
link
Ho difficoltà a comprendere la CML: Capisco che sia una specie di mix tra programmazione Imperativa e Dichiarazione, non ho capito come:
Ad esempio il seguente pseudo-codice in Programmazione Imperativa:
Declare a new List called ExpensiveItemsNames;
Foreach Item in Items:
If ItemPrice > 100 then
Add ItemName to ExpensiveItemsNames
rispetto alla versione declinativa: (usando SQL)
SELECT ItemName FROM Items
WHERE ItemPrice > 100
Quale sarebbe la versione CML di esso?
E in che modo CML aiuta il programmatore? Non ho capito anche questo.
Inoltre, nel più dettagliato sito web (come accennato prima - che significa il secondo link che ho inserito) si parla anche di potatura per ridurre la complessità dello spazio.
Mentre so cosa è la potatura, non riesco a capire che sia una relazione con la CML. Sembrano due cose non correlate per me al momento.
E anche per quanto riguarda la potatura - nell'articolo originale non è menzionata, ma in "ulteriori dettagli" il sito menziona in seguito una fase di pre-elaborazione - Non ho capito se è correlata alla LMC o meno.
Ok, capisco che la mia affermazione iniziale che la CML "è una sorta di mix tra programmazione imperativa e dichiarativa" non è vera (sebbene sia scritta nell'articolo: "... ma la distinzione le funzionalità di CML sono la conoscenza del dominio in modo intuitivo può essere specificato e come è familiare a uno sviluppatore di giochi strutture di controllo per focalizzare la potenza del motore di ragionamento. Questo costituisce un'importante via di mezzo tra regolari programmazione logica (come rappresentato da Prolog) e tradizionale programmazione imperativa (come indicato da C) "
Per quanto ho capito, la CML dovrebbe rispondere a questi problemi:
1. " se lo siamo
non molto attento a come rappresentiamo il personaggio
conoscenza possiamo privarli del "senso comune" come
ragionano sugli effetti delle loro azioni . Qual è il significato di "attenzione extra" e in che modo influisce sul "senso comune" del personaggio? E come aiuta CML?
2
. "come fornire un comodo
meccanismo per consentire al programmatore di colpire
un equilibrio tra un sacco di veloce comportamento pre-programmato
e più costoso processo decisionale in fase di esecuzione ".
Ho le mie supposizioni su questo, ma non sono convinto che siano vere:
Se usiamo solo il carattere pre-programmato , la complessità può essere anche molto difficile da programmare e anche molto complessa in termini di memoria e tempo di esecuzione di pre-elaborazione.
Tuttavia, se usiamo solo il processo decisionale in fase di esecuzione , il personaggio sarà molto "stupido" o dovrà iniziare a calcolare molto ogni passaggio.
CML fornisce qualcosa in mezzo, sotto forma di "motore di ragionamento", che riempie i dettagli durante l'esecuzione.
Non ho capito però come la CML fa questo.
L'articolo cita calcoli di tanto in tanto: " In questo modo un personaggio può prevederlo dopo
un certo periodo di tempo, o evento, sarà ignorante di alcuni
aspetto del suo mondo, e può pianificare di percepire e riprogettare. Ma non sono sicuro di aver capito correttamente.
Il collegamento "ulteriormente dettagliato" menziona la potatura , sebbene l'articolo non lo faccia. Forse questo è una parte necessaria di CML?
3. " utilizzando l'intervallo aritmetico per integrare il sensing
nel nostro quadro teorico sottostante, abilitiamo
personaggi per generare piani d'azione anche quando
si trovano in un virtuale estremamente complesso e dinamico
mondi .
Penso che il significato di " interval " qui sia lo spazio di ciò che il personaggio conosce e non gli intervalli di tempo menzionati prima. Questa è anche una parte necessaria di CML?
Quindi queste sono alcune altre domande sarei felice di capire meglio se qualcuno lo sa.